我可以在IOCP中使用accept()吗?

时间:2015-02-22 10:12:17

标签: c++ sockets winapi network-programming iocp

我想使用IOCP来处理数百个客户端连接。使用accept()接受这些连接是否有问题,或者我应该使用WSAAccept()

2 个答案:

答案 0 :(得分:2)

应该没有问题。但是可能会有,因为berkley和WSA接口不应该是混合的。我在一个项目中混合了套接字和WSASelect没有问题,因为返回的SOCKET句柄是相同的,无论你用它来获取它。

但是在没有必要的情况下混合它是恕我直言。所以如果你已经使用过WSA风格,请坚持下去。

您还应该查看AcceptEx()函数。

答案 1 :(得分:2)

使用AcceptEx()的一个非常好的理由是避免使用另一个只被唤醒来处理新连接的线程。

小心AcceptEx()但是,理想情况下,不要使用可用的“接受和读取数据”选项,这样可以通过打开连接而不是发送数据和代码来很容易地对服务器进行DOS操作要想避免DOS攻击的可能性,要做到正确是非常复杂的。