#include <winsock.h> #include <iostream.h> #include <stdio.h> #include <string.h> #include <windows.h> #define PORT 100 #define socklen_t int #pragma comment(lib, "wsock32.lib") SOCKET client; char server[50]; void ClientThread() { char message[256]; while(1) { strcpy(message,""); int len=recv(client,message,sizeof(message),0); if (strcmp(message,"")!=0) { cout<<"从"<<server<<"得到消息:\n"; //cout<<"len:"<<len<<endl; message[len]='\0'; cout<<message; } } } int main() { char message[256]; sockaddr_in srv; WSADATA wsadata; WORD VersionRequested=MAKEWORD(1,1); if (WSAStartup(VersionRequested,&wsadata)) { cout<<"Wsadata start failed\n"; return -1; } client=socket(PF_INET,SOCK_STREAM,0); if (client==INVALID_SOCKET) { cout<<"Socket create failed\n"; return -1; } srv.sin_family=PF_INET; srv.sin_addr.s_addr=htonl(INADDR_ANY); srv.sin_port=htons(PORT); cout<<"请输入服务器IP:"; cin>>server; srv.sin_addr.s_addr = inet_addr(server); if (connect(client,(struct sockaddr *)&srv,sizeof(srv))==SOCKET_ERROR) { cout<<"无法连接服务器.\n"; WSACleanup(); return -1; } while(1) { DWORD thread; CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(ClientThread),NULL,0,&thread); while(fgets(message,strlen(message),stdin)) { cout<<"发出消息:"<<message<<endl; send(client,message,strlen(message),0); } } closesocket(client); WSACleanup(); }

评论