可以在同一台计算机上的多个应用程序接收UDP广播吗?

Rod*_*ddy 11 networking udp tcp broadcast

例如,假设我有一个"智能"温度计,每隔N秒将当前温度广播为UDP数据报.

现在,我可以编写一个侦听这些消息并以图形方式显示它们的客户端,并且我可以让该客户端同时在多台计算机上运行.到目前为止没问题.

但是,当我尝试在同一台Windows计算机上运行客户端的两个实例时,我会遇到有关尝试" 绑定到已使用的端口 "的错误.

这是:-

  • 答:就像所有操作系统上的UDP广播一样?
  • B:Windows网络堆栈的限制?
  • C:或者,可能是我正在阅读数据报的方式中的一个错误?

如果A或B,有什么办法围绕它.

如果是C,那么我会发布一些代码..

小智 11

在Windows上,您可以使用多个进程绑定到同一个套接字

SocketOptionName.ReuseAddress
Run Code Online (Sandbox Code Playgroud)

选项(请参阅此答案有多种方法可以让多个进程共享一个侦听套接字?).广播数据包应该强制Windows将该数据包的副本提供给该端点上的每个侦听器.

在回答Roddy时,是的,SO_REUSEADDR也在*nix上运行.

如需深入解答,请参阅/sf/answers/1007209521/.

  • SO_REUSEADDR在Unix/Linux上以这种方式工作吗? (2认同)
  • 是否保证端点上的每个侦听器都会获得数据包的副本如果我有多个侦听器? (2认同)