这样的客户端和服务端程序能在一个局域网通信吗
客户端代码
- C/C++ code
SOCKET ClientSocket; WSADATA wsaData; sockaddr_in client,local; WORD wVersion = MAKEWORD(2,0); int wsaret = WSAStartup(wVersion, &wsaData); if(wsaret != 0) { return 0; } client.sin_family = AF_INET; client.sin_addr.s_addr = inet_addr(ServerIp); client.sin_port = htons((u_short)SERVER_PORT); local.sin_family = AF_INET; local.sin_addr.s_addr = inet_addr(LocalIp); local.sin_port = htons((u_short)LOCAL_PORT); while(true) { ClientSocket = socket(AF_INET, SOCK_STREAM, 0); bind(ClientSocket, (sockaddr*)&local, sizeof(local)); connect(ClientSocket, (sockaddr*)&client, sizeof(client)); char buf1[6],buf2[6]; _itoa_s(M, buf1, 10); _itoa_s(Reboot, buf2, 10); send(ClientSocket, buf1, sizeof(buf1), 0); send(ClientSocket, buf2, sizeof(buf2), 0); Sleep(10000); closesocket(ClientSocket); } WSACleanup();
服务端
- C/C++ code
SOCKET ServerSocket; WSADATA wsaData; sockaddr_in server; WORD wVersion = MAKEWORD(2,0); int wsaret = WSAStartup(wVersion,&wsaData); if(wsaret != 0) { return 0; } server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons((u_short)20248); ServerSocket = socket(AF_INET,SOCK_STREAM,0); if (ServerSocket == INVALID_SOCKET) { return 0; } if (bind(ServerSocket,(sockaddr*)&server,sizeof(server)) != 0) { return 0; } if (listen(ServerSocket,1000) != 0) { return 0; } SOCKET ClientSocket; int clientlen = sizeof(client); while(true) { ClientSocket = accept(ServerSocket, (struct sockaddr*)&client, &clientlen); int Result1 = recv(ClientSocket, buf1, sizeof(buf1), 0); int Result2 = recv(ClientSocket, buf2, sizeof(buf2), 0); SetEvent(hEvent); closesocket(ClientSocket); Sleep(5000); } closesocket(ServerSocket); WSACleanup();
[解决办法]