在 Windows 下处理多个客户端连接的最佳方法(不使用线程)?
Best method to handle multiple client connections under Windows (without the usage of threads)?
我发现为每个客户端连接创建一个线程的成本很高,而且我可以创建的线程数量也有限制,因此连接数量也有限制。我还有哪些其他选择?我读到 select()
可以使用,但我需要做一些调整以允许大量连接。
请注意,我不想使用外部库。
查看 asio 库 - 可单独使用或作为 boost 的一部分使用
这是示例页面的 link - 您将看到一个单线程的 http 服务器。非常简单,非常轻量级,不需要 linking 到其他库。
使用 I\O 完成端口这些允许您使用少量线程扩展到数千个连接。
如果跨平台不是您的目标,那么最好直接写入 Windows IOCP API 而不是使用任何跨平台库。
请注意,我已经 some articles and some code you can download here 解释了如何使用 IOCP。
我发现为每个客户端连接创建一个线程的成本很高,而且我可以创建的线程数量也有限制,因此连接数量也有限制。我还有哪些其他选择?我读到 select()
可以使用,但我需要做一些调整以允许大量连接。
请注意,我不想使用外部库。
查看 asio 库 - 可单独使用或作为 boost 的一部分使用
这是示例页面的 link - 您将看到一个单线程的 http 服务器。非常简单,非常轻量级,不需要 linking 到其他库。
使用 I\O 完成端口这些允许您使用少量线程扩展到数千个连接。
如果跨平台不是您的目标,那么最好直接写入 Windows IOCP API 而不是使用任何跨平台库。
请注意,我已经 some articles and some code you can download here 解释了如何使用 IOCP。