【发布时间】:2010-02-16 17:15:58
【问题描述】:
我的以下代码在我的 Windows 2003 服务器上运行良好:
static void Main(string[] args)
{
UdpClient sock = new UdpClient(5353);
IPAddress multicastIP = IPAddress.Parse("224.0.0.251");
IPEndPoint multicastEndpoint = new IPEndPoint(multicastIP, 5353);
sock.JoinMulticastGroup(multicastIP);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("Ready...");
byte[] data = sock.Receive(ref iep);
...
sock.Close();
}
但在我的 Windows 2008 R2 服务器(在 VMWare Workstation 内运行,将单个网络适配器配置为 NAT)上,我的应用程序没有收到任何数据包。
如果我运行wireshark,它显示数据包正在传送到机器(它们看起来正确并且它们具有正确的多播IP和端口)但应用程序层没有收到任何信息(它在.Receive中永远阻塞)
我错过了什么吗?
【问题讨论】:
-
想要添加 - 当数据包从本地机器(同一台机器上的发送者和接收者)发送时,代码在 Win2008 上也可以正常工作。当它从内部网络(192.x.x.x)上的外部机器发送时它不起作用,即使 Wireshark 显示数据包已到达(所以我怀疑 VMWare 有问题)。从内部机器发送时,它是通过接口IP发送的,而不是环回IP..
标签: .net-3.5 networking multicast