Here is my socket client and socket server implementation. The socket server tries to send unicode data to the socket client. But I didn't get it right at this time. Would any guru here point out what went wrong? Thanks a lot.
Code:// socket server int _tmain(int argc, _TCHAR* argv[]) { WORD wVersionRequested; WSAData data; wVersionRequested = MAKEWORD(2,2); if(WSAStartup(wVersionRequested, &data) != 0) return 1; SOCKET sock = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); if(sock == INVALID_SOCKET) return 1; sockaddr_in sa; sa.sin_family = AF_INET; sa.sin_addr.s_addr = inet_addr("127.0.0.1"); sa.sin_port = htons(1101); if(bind(sock, (sockaddr*)&sa, sizeof(sa)) != 0) return 1; if(listen(sock, 10) != 0) return 1; if((sock = accept(sock, (sockaddr*)&sa, NULL)) == INVALID_SOCKET) return 1; char buffer[128]; strcpy(buffer, "我们"); if(send(sock, buffer, strlen(buffer)+1, 0) == SOCKET_ERROR) return 1; closesocket(sock); return 0; } // socket client int _tmain(int argc, _TCHAR* argv[]) { WORD wVersionRequested = MAKEWORD(2,2); WSADATA data; if(WSAStartup(wVersionRequested, &data)!=0) return 1; SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(sock == INVALID_SOCKET) return 1; sockaddr_in sa; sa.sin_family = AF_INET; sa.sin_addr.s_addr = inet_addr("127.0.0.1"); sa.sin_port = htons(1101); if(connect(sock, (sockaddr*)&sa, sizeof(sa)) == SOCKET_ERROR) return 1; char buf[128]; if(recv(sock, buf, strlen(buf)+1, 0) == SOCKET_ERROR) return 1; closesocket(sock); return 0; }




Reply With Quote