1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| #define WIN32_LEAN_AND_MEAN
#include<winSock2.h> #include<windows.h> #include<bits/stdc++.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std; int main() { WORD ver = MAKEWORD(2,2); WSADATA dat; if(0 != WSAStartup(ver,&dat)) { return 0; } SOCKET _mysocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(INVALID_SOCKET == _mysocket) { return 0; } sockaddr_in _myaddr = {}; _myaddr.sin_family = AF_INET; _myaddr.sin_port = htons(8888); _myaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if(SOCKET_ERROR == bind(_mysocket,(sockaddr*)&_myaddr,sizeof(sockaddr_in))) { cout<<"绑定不成功"<<endl; } else { } if(SOCKET_ERROR == listen(_mysocket,5)) { cout<<"监听失败"<<endl; } else { } sockaddr_in _clientAddr = {}; int _addr_len = sizeof(sockaddr_in); SOCKET _temp_socket = INVALID_SOCKET; char _buf[256] = {}; _temp_socket = accept(_mysocket,(sockaddr*)&_clientAddr,&_addr_len); if(INVALID_SOCKET == _temp_socket) { cout<<"接收到无效客户端Socket"<<endl; } else { cout<<"新客户端加入"<<endl; printf("IP地址为:%s \n", inet_ntoa(_clientAddr.sin_addr)); } while(true) { int _buf_len = recv(_temp_socket,_buf,256,0); if(_buf_len<=0) { printf("客户端已退出\n"); break; } if(0 == strcmp(_buf,"getname")) { char _msg[] = "My name is Mr.Zhao"; send(_temp_socket,_msg,strlen(_msg)+1,0); } else if(0 == strcmp(_buf,"getage")) { char _msg[] = "My age is 19"; send(_temp_socket,_msg,strlen(_msg)+1,0); } else { char _msg[] = "???"; send(_temp_socket,_msg,strlen(_msg)+1,0); } }
closesocket(_temp_socket);
closesocket(_mysocket); WSACleanup(); printf("任务结束,程序已退出"); getchar(); return 0; }
|