我需要启动客户端1000的在一个单一的过程连接,我需要解决的关键限制因素是驱动程序不支持ConnectEx,所以我不能有一个纯IOCP解。非阻塞套接字在Windows连接不ConnectEx
我的第一个想法是处理连接的线程池,每个句柄可以使用普通连接/选择语义处理多达64个连接,并且一旦连接继续使用IOCP。 但这不能工作;一旦选择正在运行,我无法将另一个套接字添加到FD_SET。所以我将不得不将套接字设置为非阻塞,然后轮询它们。
最好的解决方案可能是最简单的;一个每个线程连接客户端。假设我可以保持连接速率合理,池中的线程数可能很小。
这是一个奇怪的情况,理想情况下,驱动程序将支持ConnectEx,但它不(现在),我需要以最好的方式解决它。
还有别的办法吗?
WSAAsyncSelect和WSAEventSelect都有益无害。我想我会以每个连接一个线程开始,然后使用这两个连接中的一个将连接汇集到64个组中。谢谢。 – hplbsh
我没有注意到WSAAsyncSelect使用Windows消息。讨厌,但可能非常有帮助。 – hplbsh