【发布时间】:2015-02-22 10:12:16
【问题描述】:
我想使用 IOCP 来处理数百个客户端连接。使用accept()接受这些连接是否有问题,还是我应该使用WSAAccept()?
【问题讨论】:
标签: c++ sockets winapi network-programming iocp
我想使用 IOCP 来处理数百个客户端连接。使用accept()接受这些连接是否有问题,还是我应该使用WSAAccept()?
【问题讨论】:
标签: c++ sockets winapi network-programming iocp
应该没有问题。但是可能会有,因为不应该混合使用 berkley 和 WSA 接口。我在一个项目中混合了套接字和 WSASelect 没有问题,因为返回的 SOCKET 句柄是相同的,无论您使用哪个命令获取它。
但恕我直言,在不必要的地方混合它是一种糟糕的风格。所以如果你已经用过 WSA 风格,那就坚持下去吧。
您还应该查看AcceptEx() 函数。
【讨论】:
使用AcceptEx() 的一个很好的理由是避免使用另一个只会被唤醒以处理新连接的线程。
请注意AcceptEx(),理想情况下,不要使用可用的“接受和读取数据”选项,因为这样可以很容易地通过打开连接而不发送数据和代码来对服务器进行 DOS避免潜在的 DOS 攻击是相当复杂的。
【讨论】: