在 Windows 上对 UDP 多播进行故障排除

在 Windows 上对 UDP 多播进行故障排除

我是一名程序员,不是系统管理员,所以请原谅我的管理幼稚。我的软件是用 C# 编写的,依赖于 UDP 多播。一台机器(服务器)将事件流式传输到已知的 UDP 组地址(可配置,但默认为 224.130.103.5),网络上的所有客户端都订阅了该地址。

通常情况下,这种方法效果很好,但对于我的一些客户来说,这种方法根本不起作用,而且他们的网络管理员通常无法修复该问题。我的问题是,在 Windows 网络上,UDP 多播不起作用的常见原因是什么?我能告诉网络管理员如何修复它,或者至少告诉他们去哪里查找?

答案1

我认为您需要注意的最常见原因是路由网络,其中需要参与多播组的整个系统集(客户端和服务器)不在同一个广播域上。

这是首先要问客户网络管理员的问题。至于如何解决,这取决于他们的网络设备;他们需要设置私有信息协议并在他们的路由设备上进行 IGMP 侦听。

他们的设备是否支持多播可能存在问题,这对您的某些客户来说可能是个主要障碍。您可能需要研究不需要他们的网络设备与多播配合使用的替代解决方案。以下是一些想法:

  • 每个子网上都有一种“代理”,客户端通过单播从服务器获取消息,并将其转发到多播组
  • 将所有事件流量切换为单播。可能是以下情况之一:RabbitMQ 活动消息队列

答案2

如果你VirtualBox Host-Only Ethernet Adapter的系统上激活了某个程序,那么这可能是问题所在,对我来说就是这样,所以请尝试禁用它。请参阅https://www.virtualbox.org/ticket/8698

答案3

您可以使用 wireshark 之类的工具来查看有问题的机器上的 UDP 数据包。这样,您就应该能够确定 UDP 数据包是否到达了该机器。

答案4

尝试禁用 Windows 防火墙并检查您的软件是否正在接收数据包。我的 Java 程序也遇到过类似的问题。如果防火墙是问题所在,请开始尝试针对传入流量设置防火墙规则。

相关内容