c语言socket多线程编程限制客户端连接数
int main(){ WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); HANDLE threads[MAXCLIENTS];
SOCKET s=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in sockaddr; sockaddr.sin_family=PF_INET; sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); sockaddr.sin_port=htons(9000); bind(s, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR));
listen(s, 1);
printf("listening on port [%d].\n", 9000);
int existingClientCount=0; while(TRUE) { SOCKADDR clientAddr; int size=sizeof(SOCKADDR);
SOCKET clientsocket; clientsocket=accept(s, &clientAddr, &size); printf("***SYS*** New client touched.\n");
if(existingClientCount<MAXCLIENTS) //判断是否已经超出最大连接数了 { threads[existingClientCount++]=CreateThread(NULL, 0, ProcessClientRequests, &clientsocket, 0, NULL); //启动新线程,并且将socket传入 } else { char* msg="Exceeded Max incoming requests, will refused this connect!\r\n"; send(clientsocket, msg, strlen(msg)+sizeof(char), NULL); //发送拒绝连接消息给客户端 printf("***SYS*** REFUSED.\n"); closesocket(clientsocket); //释放资源 break; } }
printf("Maximize clients occurred for d%.\r\n", MAXCLIENTS);
WaitForMultipleObjects(MAXCLIENTS, threads, TRUE, INFINITE); //等待所有子线程,直到完成为止
closesocket(s); for(int i=0;i<MAXCLIENTS; i++) { CloseHandle(threads[i]); //清理线程资源 } WSACleanup();
printf("Cleared all.\r\n");
getchar();
exit(0);}
- java使用多线程编程,实现socket服务器客户端交互
- 多线程Socket编程实现服务器与客户端的连接
- 网络编程_TCP_Socket通信_聊天室_客户端多线程_群聊JAVA191-192
- [linux] C语言Linux系统编程-socket回声客户端
- Socket编程——使用多线程实现多客户端的通信
- C Socket初探 - 加入多线程支持,限制最大接入客户端个数
- java socket编程多线程处理多客户端
- Windows C语言 Socket编程 client端(客户端)--断线重连版
- python多线程socket编程之多客户端接入
- [网络编程]——TCP_Socket通信_聊天室_客户端多线程
- python多线程socket编程--多客户端接入
- python多线程socket编程--多客户端接入
- [置顶] 使用多线程实现多客户端的连接(通过Socket实现TCP编程)
- Socket 多线程 JDBC综合编程一服务器端编程
- Socket网络编程 客户端与服务端通信流程
- Linux下TCP Socket编程C语言小实例
- 教你修改Linux下高并发socket最大连接数所受的各种限制
- Linux下高并发socket最大连接数所受的各种限制
- Linux下高并发socket最大连接数所受的各种限制
- Windows下C语言的Socket编程例子(TCP和UDP)