客户端 / 发送端:
#include "stdafx.h"//TCP通信客户端
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <iostream>
#pragma warning(disable:4996)
using namespace std;
const int PORT = 9002;
int main(int argc, char* argv[])
{
WSADATA wd;
WSAStartup(0x202, &wd);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//SOCK_STREAM表示TCP
if (sock == INVALID_SOCKET)
{
cout << "socket函数失败:" << WSAGetLastError() << endl;
cin.get();
return -1;
}
sockaddr_in sa = { AF_INET};//
int n = bind(sock, (sockaddr*)&sa, sizeof(sa));
if (n == SOCKET_ERROR)
{
cout << "bing函数失败:" << WSAGetLastError() << endl;
cin.get();
return -1;
}
sa.sin_addr.S_un.S_addr = inet_addr("192.168.1.1");//其中IP地址是服务端的地址 inet_addr()返回的地址已经是网络字节格式
sa.sin_port = htons(PORT);
n = connect(sock,(sockaddr*)&sa, sizeof(sa));
if (n == SOCKET_ERROR)
{
cout << "connect函数:" << WSAGetLastError() << endl;
return -1;
}
char s[2048];
while (true)
{
fflush(stdin);
cin.getline(s, 2048);
send(sock,s, strlen(s), 0);
}
cin.get();
return 0;
}
服务端 / 接收端:
#include "stdafx.h"//TCP通信服务端
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <iostream>
#pragma warning(disable:4996)
using namespace std;
const int PORT = 9002;
int main(int argc,char* argv[])
{
WSADATA wd;
WSAStartup(0x202,&wd);
SOCKET sock = socket(AF_INET,SOCK_STREAM,0);//SOCK_STREAM表示TCP
if (sock == INVALID_SOCKET)
{
cout << "socket函数失败:" << WSAGetLastError() << endl;
cin.get();
return -1;
}
sockaddr_in sa = {AF_INET,htons(PORT)};//
int n = bind(sock, (sockaddr*)&sa, sizeof(sa));
if (n == SOCKET_ERROR)
{
cout << "bing函数失败:" << WSAGetLastError() << endl;
cin.get();
return -1;
}
listen(sock, 5);//监听
int nLen = sizeof(sa);
SOCKET socka = accept(sock,(sockaddr*)&sa,&nLen);
if (socka == INVALID_SOCKET)
{
cout << "accept函数失败:" << WSAGetLastError() << endl;
return -1;
}
cout << "成功连接进来一个:" << inet_ntoa(sa.sin_addr) << " - " << htons(sa.sin_port) << endl;
char s[2048];
while ((n = recv(socka, s, sizeof(s)-1, 0)) > 0)
{
s[n] = 0;
cout << s << endl;
}
cout << WSAGetLastError() << endl;
cin.get();
return 0;
}