例如,假设我有一个“智能”温度计,每隔N秒将当前温度广播为UDP数据报。
现在,我可以编写一个侦听这些消息并以图形方式显示它们的客户端,并且我可以让该客户端同时在多台计算机上运行。到目前为止没问题。
但是,当我尝试在同一台Windows计算机上运行两个客户端实例时,我收到有关尝试“绑定到已在使用的端口”的错误。
这是: -
如果是A或B,有什么办法围绕它。
如果是C,那么我会发布一些代码..
答案 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。