【发布时间】:2013-01-04 20:52:32
【问题描述】:
您好,提前感谢您的帮助:
我看到了这个众所周知和讨论过的问题。但是,这仅在 Eclipse 中运行/调试时,在 Win 7 上的 Juno。VM 版本无关紧要。
因此,这是一个仅限 Eclipse 的问题。当我独立运行同一个应用程序时,不会发生这种情况 - 仅在 Eclipse 中(我是否已经说过;-))
这发生在(出于测试目的)我在我的网络适配器上禁用了 IPv6,然后在这些相同的适配器上启用了 IPv6。
应用程序很简单:在 WS-Discovery 端口上创建一个多播服务器,以侦听并向该组报告任何 UDP 多播。该程序在所有情况和平台上都可以正常工作,除了在机器和 Eclipse 中我如上所述禁用/启用 IPv6。
还有: 1) 是,PreferIPv6Addresses = true 和 PreferIPv4Stack = false - 代码中设置的参数 2)不,Win 7主机文件没有搞砸 3) 不,这不是安卓应用
下面是错误代码。
再次感谢,提前,
汤姆
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);
【问题讨论】:
-
您能否检查一下您使用的 JVM 版本是否与您用于独立运行应用程序的 JVM 版本相同?
-
好问题,谢谢。是的,我确实检查并确保我的 .bat 文件指向我在 Eclipse 中使用的同一个已安装的 JVM。