服务器端
#include "iostream"
#include "winsock2.h"
#pragma comment (lib, "ws2_32")
using namespace std;
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData); //初始化ws2_32.dll动态库连接
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in sockaddr;
sockaddr.sin_family = PF_INET;
sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //IP地址,将IP转换为unsigned long型数值
sockaddr.sin_port = htons(827); //端口号,本地字节顺序转换为网络字节顺序
bind(s, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR));
listen(s, 1);
SOCKADDR clientAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clientSock;
//从处于监听状态的流套接字的客户端请求队列中取出第一个请求,并创建一个新的套接字与客户端进行通信
clientSock = accept(s, (SOCKADDR *)&clientAddr, &nSize);
send(clientSock, "hello client\n", strlen("hello client\n")+sizeof(char), 0);
closesocket(clientSock);
closesocket(s);
WSACleanup(); //释放ws2_32.dll
return 0;
}
客户端
#include "stdio.h"
#include "winsock2.h"
#pragma comment (lib, "ws2_32")
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in sockAddr; //对服务器端的描述
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(827);
connect(s, (SOCKADDR *)&sockAddr, sizeof(SOCKADDR));
char szBuffer[MAXBYTE] = {0};
recv(s, szBuffer, MAXBYTE, 0);
printf("szBuffer = %s\n", szBuffer);
closesocket(s);
WSACleanup();
return 0;
}
服务器端
客户端