【发布时间】:2013-11-12 17:38:51
【问题描述】:
我正在我的软件中重写代码以支持多个连接,直到现在,我使用 select。为了让我的软件更便携,我改用 WSAPoll。在 WSAPoll 中发现 Microsoft 无法解决的错误后,我想更改为建议的 WSAEventSelect。由于 WSAWaitForMultipleEvents 最多仅支持 64 个事件,并且出于节省资源的原因,我想将一个 hEvent 连接到多个套接字。我现在的问题是,是
rc = WSAEventSelect(s1, hEventObject1, FD_READ);
rc = WSAEventSelect(s2, hEventObject1, FD_READ);
合法操作?请仅在您有确凿的事实而不是意见的情况下回答。或者你自己以前用过这种方式。另外,出于某些原因,我不想使用 boost(例如,1.52 在套接字部分有一个错误(有趣的是,这与 WSAPoll 几乎相同的错误))。也请不要“你为什么不......”
【问题讨论】:
-
事实:如果您设置一对多映射,您将失去唯一标识对象的能力。我想知道您希望通过问题中发布的代码 sn-p 实现什么目标。
-
@IInspectable 你当然是对的。我必须使用 WSAEnumNetworkEvents 遍历所有套接字,即使它们没有发出任何信号。我只是尝试将内容保存在单个线程中,因为我重构的其余代码目前不是线程安全的。