![](/img/trans.png)
[英]Winsock - stop accepting new connections yet keep comm with existing connections
[英]Stop accepting new connections
我想停止接受来自主线程的连接。我已在此处复制了原始代码。 在此服务器上。 每个连接都会产生一个新线程。 有一个单独的线程可以清理连接池,另一个线程可以完美地处理用户命令。 我只想停止接受基于用户命令的新连接。 我的主线程中存在接受方法,我使用以下逻辑停止接受
while (bListening && (sctCommSocket = accept(sctBaseSocket,(struct sockaddr *)&addrClient,&c)) != INVALID_SOCKET)
但是将bListening设置为true后,循环仍然接受1个连接。但这不是预期的。 请解释
设置标志时,循环已经在accept()
被阻塞,因此它接受了下一个连接。
这与这里提出的问题非常相似: 是否可以(并且安全)使接受套接字不阻塞?
我认为这也可以解决您的问题,尽管从代码片段中尚不清楚您使用的是哪种操作系统和多线程库。
编辑:
这是有关网络编程的好指南: http : //beej.us/guide/bgnet/output/html/singlepage/bgnet.html
专门解决阻塞问题的部分是http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#Blocking
有多种方法可以解决此问题,“最佳”方法取决于您的具体情况。 正如评论者所建议的,您必须在第一次调用接受之前将套接字设置为非阻塞。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.