0

嗨,感谢您提前提供的任何帮助:

我看到了这个众所周知和讨论过的问题。但是,这在 Eclipse 中运行/调试时,Win 7 上的 Juno。VM 版本无关紧要。

因此,这是一个仅限 Eclipse 的问题。当我独立运行同一个应用程序时,这不会发生 - 仅在 Eclipse 中(我是否已经说过;-))

这发生在(出于测试目的)我在我的网络适配器上禁用了 IPv6,然后在这些相同的适配器上启用了 IPv6。

该应用程序很简单:在 WS-Discovery 端口上创建一个多播服务器,以侦听并向该组报告任何 UDP 多播。该程序在所有情况和平台上都可以正常工作,除了在机器和 Eclipse 中我如上所述禁用/启用 IPv6 的地方。

另外: 1) 是,PreferIPv6Addresses = true 和 PreferIPv4Stack = false - 代码中设置的参数 2) 不,Win 7 主机文件没有搞砸 3) 不,这不是 Android 应用程序

这是代码后面的错误。

再次感谢,提前,

汤姆

Protocol family not supported
java.net.SocketException: Protocol family not supported
    at java.net.PlainDatagramSocketImpl.bind(Native Method)
    at java.net.DatagramSocket.bind(DatagramSocket.java:368)
    at java.net.MulticastSocket.<init>(MulticastSocket.java:147)


System.setProperty("java.net.preferIPv4Stack", "false");
System.setProperty("java.net.preferIPv6Addresses", "true");

// bind to all IPv6 ports (in contrast to "0.0.0.0" for IPv4 binding)
InetAddress ia6BindTo = InetAddress.getByName("::");
SocketAddress sa = new InetSocketAddress(ia6BindTo, 3702);

// bam
MulticastSocket ms = new MulticastSocket(sa);

// no longer gets this far since disable/enable IPv6 on net adapters
InetAddress m_GroupAddress = InetAddress.getByName("[FF02::C]");
ms.joinGroup(m_GroupAddress);
4

1 回答 1

0

这不是“为什么?”的答案。

这是解决方法的答案。

我从 Eclipse 中删除了 Installed JVM 并重新安装了它。行为清除。

我不能完全接受这有两个原因:

1) 当我再次禁用/启用 IPv6 时,问题再次出现。因此,必须重复解决方法。2) 我必须进一步配置项目并运行配置,以使所需的 JVM 再次成为默认值。

如果我发现为什么会在 Eclipse 中发生这种情况,我将发布我的发现。

于 2013-01-07T19:42:28.063 回答