【问题标题】:Listening to multiple ports with TcpListener使用 TcpListener 监听多个端口
【发布时间】:2012-10-28 01:50:06
【问题描述】:

我需要通过 TCP 监听大约 100 个不同的端口。查看 C# 中的 TcpListener 类,它显然只监听一个端口。创建 100 个不同的 TcpListener 实例是否有意义,每个实例都有自己的端口。

我不认为它是一个干净的解决方案,但它似乎是唯一的选择。

【问题讨论】:

  • 一个奇怪的要求,但为什么不呢。只要确保它不是XY problem
  • 基本上,我有不同的 sim 卡发送数据,它们都具有相同的 IP,因此我无法在具有不同 IP 的一个端口上侦听(像往常一样)。相反,我在发送数据的应用程序上设置不同的端口,这样我就可以知道它是哪一个。
  • 您是否无法让您的设备将某种 ID 作为其消息的一部分发送给您?即通过消息识别并全部转到一个端口?当我的大量设备隐藏在 NAT 后面时,我就是这样做的。
  • 他们第一次发送它只是为了做一个 ACK​​。然后由您决定是否继续链接。如果 IP 不相同,我可以将 IP 与这个唯一 ID 关联起来。这就是为什么我会考虑使用不同的端口。
  • 您能否再澄清一些 - 确保这不是 XY 问题?您是为设备编写软件还是只有有限的配置选项?

标签: c# networking tcp ports


【解决方案1】:

是的 - 你需要 100 个TcpListeners。最好的办法是将它们放在一个列表中(通过端口列表初始化循环),并将它们作为一个循环中的单个实体进行管理

【讨论】:

  • 不要简单地循环监听,学会使用 i) BeginAccept... 或 ii) Accept..Async,其他性能。
猜你喜欢
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2012-12-29
相关资源
最近更新 更多