繁体   English   中英

停止接受新连接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM