【发布时间】:2009-09-27 02:06:10
【问题描述】:
我有一个程序(进程)需要监听 3 个端口……两个是 TCP,另一个是 UDP。
两个 TCP 端口将每隔一段时间接收大量数据(可能每 5 分钟一次或每 20 秒一次)。第三个 (UDP) 端口正在接收常量数据。现在,让这些在不同的线程上监听有意义吗?
例如,当我从一个 TCP 端口接收大量数据时,我不希望我的 UDP 流中断......这些是网络编程的常见问题吗?
如果有任何影响,我将在 Windows 上使用 Boost 库。
我只是在寻找有关此问题以及如何管理多个连接的想法/想法/指导。
【问题讨论】:
-
我建议您遵循“boost:asio/select/Windows Completion Port API”和“线程池”答案之一的建议(并将其标记为正确)。请注意,对于您的应用程序,每个端口执行 1 个线程是最简单的实现。虽然您可能会说今天您永远不需要超过 4-6 个套接字,但有一天您可能需要这个应用程序来扩展到更多的套接字。因此,您可能会在今天使用线程池为自己(或跟随您的人)省去很多麻烦。
-
对这个问题的回答有点刺激。每个人似乎都认为您想构建一个 Web 服务器。我不知道答案(这就是为什么这只是一个评论),但我怀疑如果 UDP 流的吞吐量很高,并且你想避免丢弃 UDP 数据包,你真的希望它能够运行在不同的处理器上。
标签: c++ networking boost network-programming