多播套接字关闭需要3分钟,当TTL>1时。

4
在某些Windows机器上,我发现一个多播socket.close调用需要约3分钟时间。这在Java和.NET中都是可以重现的,不论使用哪种类型的网络接口卡或Windows版本。
大多数机器上无法重现此问题,但出现此问题的机器似乎遵循相同的模式。TTL>1会导致3分钟的socket.close,而任何TTL==1似乎会几乎立即关闭套接字。
我的问题是是否有其他人看到过这个问题,并且是否知道为什么会出现这个问题?
2个回答

2
我认为我已经解决了使用多播TTL>1时Socket.Close()需要3分钟才能完成的谜团:每次启动路由和RAS服务(RRAS)时都会出现这种情况。这篇KB文章解释了原因并提供了一个热补丁:http://support.microsoft.com/kb/2555948/en-us
在管理员shell中使用netsh interface ipv4 set global multicastforwarding=disabled可以将Socket.Close()时间恢复到正常水平。

1

是的,我可以确认这一点。在 Windows 7 上使用 C++ 和 UDP 套接字时也会出现同样的行为。我发现,在我的项目中,不加入发送组就可以解决这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接