从Win7 Pro发送多播数据包与Ultimate

时间:2011-04-26 00:53:36

标签: c# multicast udpclient

我有两个开发平台,一个运行Windows 7旗舰版(笔记本电脑),一个运行Windows 7专业版(桌面版)。我只是检查了我的桌面上的代码,它在我的笔记本电脑上完美地发送了一个udp数据包通过多播(下面)它可以在我的Win7终极计算机上工作,以及win2k3服务器和我可以测试的Windows XP机器它打开,但是在我的win7 Pro框中,我得到以下SocketException“无法执行套接字上的操作,因为系统缺少足够的缓冲区空间或因为队列已满”

Windows 7 Pro不允许您发送多播数据包吗?或者我错过了什么?

var socket = new UdpClient("239.7.23.1", 6567);
var testBuf = new byte[] {12, 24};
socket.Send(testBuf, 2);

更新:我忘了提到我禁用了所有防火墙,驱动程序是英特尔提供的驱动程序,并且通过设备的高级属性,我验证接收和发送缓冲区都设置为2048,我有尝试使用2到256字节有效负载的上述测试代码,所有这些都有相同的错误。

1 个答案:

答案 0 :(得分:1)

这有很多种可能性,所以虽然我没有具体的答案,但它至少可以帮助排除故障。

首先,代码应该适用于两个系统。

桌面上的NIC是否可能更便宜/更低端,并且没有为nic队列分配足够的缓冲区?这通常是NIC模型特定的功能(有点像获得具有X量的L2缓存的PC - 不同的模型具有不同的缓存缓冲区)。缓冲区分配中的驱动程序差异如何?你使用的是manuf驱动程序还是微软软件?如果您正在使用它,请尝试使用不同的驱动程序和/或将其更新为最新的manuf驱动程序而不是microsoft的版本。

您是否验证了两者都禁用了防火墙,并且每个系统上的Windows防火墙设置不同。他们在不同的路由器上?如果是这样,是否可能在一台路由器上禁用多播,而在另一台路由器上禁用多播?可能会有很多事情导致这种情况,因此很多事情都可能导致这个问题。 HTH。