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

标签 c++ sockets winapi network-programming overlapped-io

我正在使用 Overlapped IO,我想使用阻塞调用来接受客户端连接,就像我使用普通 accept() 一样。我不确定,但我认为 AcceptEx() 不会阻塞,而 WSAAccept() 会阻塞。那么 WSAAccept() 是否类似于 accept()

最佳答案

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

但是,如果您使用 WSAEventSelect 在您的监听器上针对 FD_ACCEPT 注册一个事件,您将获得更多控制权。当客户端准备好被接受而不阻塞时,您的事件将被设置。

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

关于c++ - 我应该使用 AcceptEx() 还是 WSAAccept()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719806/

相关文章:

c++ - 什么时候使用 c++ iostreams 而不是 ReadFile、WriteFile、fprintf 等...?

c++ - 包含 Qt header 的问题

java - 使用网络类获取 url 地址

java - Android 手机上的 TCP 服务器在 .accept() 处崩溃

c++ - 如何在 winApi 上正确创建按钮以及处理其消息

c++ - Windows 有默认的单词词典吗?

c++ - 只绑定(bind)一个参数,稍后绑定(bind)其余的

c++ - 优化是否应用于单行函数?

c - 套接字无法在基本客户端/服务器之间连接

c++ - 如何按条件打印位图?