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

时间:2012-11-09 12:15:26

标签: networking tcp udp broadcast

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

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

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

这是: -

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

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

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

1 个答案:

答案 0 :(得分:11)

在Windows上,您可以使用

将多个进程绑定到同一个套接字
SocketOptionName.ReuseAddress

选项(请参阅此回答Is there a way for multiple processes to share a listening socket?)。广播数据包应该强制Windows将该数据包的副本提供给该端点上的每个侦听器。

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

如需深入解答,请参阅https://stackoverflow.com/a/14388707/705086