Windows上的UDP多播故障排除

我是程序员,而不是系统pipe理员,所以请原谅我的pipe理天真。 我用C#编写的软件依赖于UDP多播。 一台机器即服务器将事件stream式传输到已知的UDP组地址(可configuration,默认为224.130.103.5),networking上的所有客户端都预订了该地址。

通常这种方法效果很好,但是在我的一些客户端却根本无法工作,而且他们的networkingpipe理员经常无法解决问题。 我的问题是,在Windowsnetworking上,UDP多播不起作用的常见原因是什么? 有什么我可以告诉networkingpipe理员如何解决或至less在哪里看?

我想说,你需要注意的最常见的原因是路由networking,其中需要参与多播组的整个系统组(客户端和服务器)不在相同的广播域。

这是第一个问客户的networkingpipe理员。 至于解决这个问题,要看他们的networking设备, 他们需要在他们的路由设备上设置PIM和IGMP侦听。

他们的设备可能会被击中或失败; 这可能是一些客户的主要障碍。 您可能需要查看不需要networking设备的多播解决scheme。 一对夫妇的想法:

  • 在每个子网上有一种“代理”,客户端通过单播从服务器获取消息,并将其重复到多播组
  • 切换到所有事件stream量的单播。 也许这样的事情之一: RabbitMQ ActiveMQ

您可以使用wireshark这样的工具在麻烦的机器上观看UDP数据包。 从那里你应该能够确定UDP数据包是否到达那台机器。

如果您的系统上激活了一个VirtualBox Host-Only Ethernet Adapter ,可能是问题所在,那么请尝试禁用它。 请参阅https://www.virtualbox.org/ticket/8698

尝试禁用Windows防火墙,并检查您的软件是否正在接收数据包。 我的Java程序有类似的问题。 如果防火墙出现问题,请尝试使用针对传入stream量的防火墙规则。