嗨,感谢您提前提供的任何帮助:
我看到了这个众所周知和讨论过的问题。但是,这仅在 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);