我应该使用 AcceptEx() 还是 WSAAccept()?

use*_*812 5 c++ sockets winapi network-programming overlapped-io

我正在使用重叠 IO,我想使用阻塞调用接受客户端连接,就像我使用普通accept(). 我不确定,但我认为这AcceptEx()不会阻止,而WSAAccept()会阻止。那么WSAAccept()类似于accept()?

And*_*own 3

accept()除非您已将侦听器设置为非阻塞模式,否则WSAAccept()两者都会阻塞。ioctlsocket因此,您可以使用其中任何一个来在阻塞时接受客户端。

但是,如果您用于在侦听器上WSAEventSelect注册事件,您将获得更多控制权。FD_ACCEPT当客户端准备好被无阻塞地接受时,您的事件将被设置。

然后,您可以将此事件与超时或其他事件结合起来,如果您想在调用中取消监听(例如,在应用程序退出时),您可以发出信号WaitForMultipleObjectsEx