标题可能会说明一切?
Windows 10,2017年Visual Studio社区。 p>
C ++服务器侦听端口,生成的FD放在fd_set中输入,一个放在异常中。 select()
被称为。{/ p>
它返回,并且连接是accept()
。它的FD也被添加到这两个fd_sets中。
连接正常,结束。然后将其FD从两个fd_sets中删除。
下次拨打select()
时,我告诉监听套接字有异常,但WSAGetLastError()
为零。
根据我的说明,收听FD有O_NONBLOCK
设置,因为:
选择或轮询后,可能并不总是有连接等待 返回可读性事件,因为可能会有后续事件 网络错误。为防止
accept()
阻止,我们必须设置O_NONBLOCK
。
它也设置了SO_REUSEADDR
。
listen()
的队列深度为5。