//Server.cpp #include<Winsock2.h> #include<cstdio> #include<cstdlib> #pragma comment(lib, "ws2_32.lib"); #define PORT 5000 void main() { int port = PORT; WSADATA wsaData; SOCKET sListen, sAccept; int iLen; int iSend; char buf[] = "hello, how are you"; struct sockaddr_in serv,cliet; if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0)//启动命令 { printf("Winsock load failed/n"); return; } sListen = socket(AF_INET, SOCK_STREAM, 0);//建立套接字 if (sListen == INVALID_SOCKET) { printf("socket failed:d%/n",WSAGetLastError()); return; } serv.sin_family = AF_INET; serv.sin_port = htons(port);//设置端口 //serv.sin_addr.s_addr = htonl(INADDR_ANY); serv.sin_addr.s_addr = inet_addr("127.0.0.1"); if (bind(sListen, (LPSOCKADDR)&serv, sizeof(serv)) == SOCKET_ERROR)//绑定 { printf("bind()failed:%d/n", WSAGetLastError()); return; } if (listen(sListen, 5) == SOCKET_ERROR) { printf("listen()failed:d%/n", WSAGetLastError()); return; } iLen = sizeof (cliet); while (1) { sAccept = accept(sListen, (sockaddr*)&cliet, &iLen); if (sAccept == INVALID_SOCKET) { printf("accept()failed:d%/n", WSAGetLastError()); break; } //获得客户端的ip和端口 printf("获得客户端的ip和端口/n"); printf("accepted client IP:[%s],port:[%d]/n", inet_ntoa(cliet.sin_addr),ntohs(cliet.sin_port)); iSend = send(sAccept, buf, sizeof(buf), 0);//把buf中的内容发送出去 if (iSend == SOCKET_ERROR) { printf("send()failed:%d/n", WSAGetLastError()); break; } else if(iSend == 0) break; else { printf("客户端发送出的字节数/n"); printf("send() byte:%d/n", send); } closesocket(sAccept); } closesocket(sListen); WSACleanup(); } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //Client.cpp #include<Winsock2.h> #include<stdio.h> #pragma comment(lib, "ws2_32.lib"); #define PORT 5000 #define BUFFER 1024 int main(int argc,char* argv[]) { WSADATA wsaData; SOCKET client; int port = PORT; int iLen; char buf[BUFFER]; struct sockaddr_in serv; memset(buf, 0, sizeof(buf)); if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { printf("Winsock load failed/n"); return 0; } serv.sin_family = AF_INET; serv.sin_port = htons(port); //serv.sin_addr.s_addr = inet_addr(argv[1]); serv.sin_addr.s_addr = inet_addr("127.0.0.1"); client = socket(AF_INET, SOCK_STREAM, 0); if (client == INVALID_SOCKET) { printf("socket()failed:%d/n", WSAGetLastError()); return 0; } if (connect(client, (struct sockaddr*)&serv, sizeof(serv)) == INVALID_SOCKET) { //提示链接失败 printf("connect()failed:%d/n", WSAGetLastError()); return 0; } else//链接则接收数据 { iLen = recv(client, buf, sizeof(buf), 0); if (iLen == 0) return 0; else if (iLen == SOCKET_ERROR) { printf("recv()failed:%d/n", WSAGetLastError()); return 0; } printf("recv() data from server:%s/n", buf); } closesocket(client); WSACleanup(); printf("press any key to continue"); while(1){}; }