4

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

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

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

我的问题是有其他人看到这个问题吗?有人知道为什么会这样吗?

4

2 回答 2

2

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

netsh interface ipv4 set global multicastforwarding=disabled在管理 shell 中使用可以使Socket.Close()时间恢复正常。

于 2013-12-20T13:29:53.493 回答
1

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

于 2012-08-01T10:54:38.757 回答