组播socket.close需要3分钟,TTL> 1

时间:2012-04-19 13:34:14

标签: java .net sockets multicast

在某些Windows机器上,我看到一个多播socket.close调用大约需要3分钟。

这在Java和.NET中可以在各种不同类型的NIC和Windows风格中重现。

它在大多数机器上都不具有可重现性,但具有它的机器似乎遵循相同的模式。 TTL> 1会导致3分钟的socket.close和任何TTL == 1似乎几乎立即关闭套接字。

我的问题是其他人是否看到此问题,有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

我认为我已经解决了Socket.Close()在使用多播TTL时需要3分钟完成的谜题> 1: 每次启动路由和RAS服务(RRAS)时都会发生此问题。 此KB条目解释了它并提供了一个修补程序: http://support.microsoft.com/kb/2555948/en-us

在管理员资料外壳中使用netsh interface ipv4 set global multicastforwarding=disabled会使Socket.Close()时间恢复正常。

答案 1 :(得分:1)

是的,我可以证实这一点。 UDP套接字上的Windows 7上的C ++中的相同行为。我发现没有加入你发送的同一个多播组来解决我项目中的问题。