【问题标题】:address family not supported by protocol _only_ in Eclipse after disable/enable IPv6 on Network Adapters在网络适配器上禁用/启用 IPv6 后,Eclipse 中的协议_only_ 不支持地址系列
【发布时间】: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。

标签: java eclipse sockets ipv6


【解决方案1】:

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

这是解决方法的答案。

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

这对我来说不是完全可以接受的,原因有两个:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2019-02-01
    • 2013-04-28
    • 2021-01-05
    • 2019-10-03
    • 2013-12-20
    相关资源
    最近更新 更多