在非阻塞的accetp成功后就创建一个线程来处理新的客户端,并将客户端socket和地址作为参数传给线程函数.
在非阻塞的代码中修改一下即可
示例代码:
/* 主线程进行accpet,每次accpet成功后就生成一个线程处理这个连接过来的 客户端 */ #define WIN32_LEAN_AND_MEAN #include<iostream> #include<string> #include<winsock2.h> using namespace std; #pragma comment(lib,"ws2_32.lib") DWORD WINAPI handleThreadProc(LPVOID param[]) { char recv_buffer[1024]; char send_buffer[1024]; int error_code; //存储WSAGetLastError()的返回值 int len = sizeof(SOCKADDR); SOCKET client_socket = (SOCKET)param[0]; SOCKADDR_IN* client_addr=(SOCKADDR_IN*)param[1]; //解决非阻塞的recv和send cout << "connect by " << inet_ntoa(client_addr->sin_addr) << ntohs(client_addr->sin_port) << endl; while (1) { memset(recv_buffer, '