Pon*_*oni 7 c++ sockets winsock
我有一个基于Winsock的服务器应用程序,它使用Windows Winsock I/O完成端口.
因此,接受的每个连接与监听套接字相关联以开始接收通知(读取,写入,关闭等).
侦听套接字有100个待处理连接的积压.
一切都很好.
在某些时候,我想停止接受新的连接,同时保持与已连接的现有连接套接字的通信.
我想我可以做一个:
现在,选项#1给出了预期的结果; 我的应用程序不处理新连接,但它确实接受积压的数量(100).实际上是连接 - 我不想要它!
选项#2 ; 我能这样做吗?怎么样?在MSDN上也找不到谷歌.MSDN上的listen()文档说;
如果在已经侦听的套接字上调用listen函数,它将返回成功而不更改backlog参数的值.在后续调用侦听侦听套接字时将backlog参数设置为0不被视为正确重置,尤其是在套接字上存在连接时.
对我不好.
如果我能以安全的方式这样做,我会将它与选项#1结合起来,有效地停止在机器上建立任何新的连接(通过监听端口!).
选项#3实际上有效; 关闭侦听套接字后,我仍然可以与现有连接通信,并且积压已经消失(好吧,关闭监听套接字!).
我担心这种方法可能会产生一些副作用.谁能确认一下?
您只需关闭侦听套接字即可.接受的连接有自己的套接字,关闭监听套接字不会影响它们.
例如,在Microsoft文档中有一个示例服务器应用程序,其中演示了基本的套接字使用情况.在通过接受的套接字进行通信之前(在执行循环之前),监听套接字被关闭.