我需要在单个进程中启动 1000 个客户端连接,我需要解决的关键限制是驱动程序不支持 ConnectEx,因此我无法拥有纯 IOCP 解决方案。
我的第一个想法是处理连接的线程池,其中每个句柄可以使用普通的连接/选择语义处理多达 64 个连接,一旦连接就继续使用 IOCP。但这行不通;一旦选择运行,我就不能向 FD_SET 添加另一个套接字。所以我必须将套接字设置为非阻塞并轮询它们。
最好的解决方案可能是最简单的;每个线程一个连接客户端。假设我可以保持合理的连接率,池中的线程数可能会很小。
这是一个奇怪的情况,理想情况下,驱动程序会支持 ConnectEx,但它(目前)不支持,我需要以最好的方式解决它。
还有其他方法吗?