在 Windows 下处理多个客户端连接的最佳方法(不使用线程)?

Best method to handle multiple client connections under Windows (without the usage of threads)?

我发现为每个客户端连接创建一个线程的成本很高,而且我可以创建的线程数量也有限制,因此连接数量也有限制。我还有哪些其他选择?我读到 select() 可以使用,但我需要做一些调整以允许大量连接。

请注意,我不想使用外部库。

查看 asio 库 - 可单独使用或作为 boost 的一部分使用

这是示例页面的 link - 您将看到一个单线程的 http 服务器。非常简单,非常轻量级,不需要 linking 到其他库。

http://think-async.com/Asio/asio-1.11.0/doc/asio/examples/cpp11_examples.html#asio.examples.cpp11_examples.http_server

使用 I\O 完成端口这些允许您使用少量线程扩展到数千个连接。

如果跨平台不是您的目标,那么最好直接写入 Windows IOCP API 而不是使用任何跨平台库。

请注意,我已经 some articles and some code you can download here 解释了如何使用 IOCP。