Java绑定到仅IPv4计算机上的::0?

Java绑定到仅IPv4计算机上的::0?,java,activemq,ipv6,Java,Activemq,Ipv6,我有一个Java程序监听端口上的传入连接。我一直使用0.0.0.0作为IP地址,这样它就可以在多址系统上的任何IP上接受连接。好的,任何IPv4地址,也就是说,所以我想切换到IPv6等效地址,::0,这样它也会接受传入的IPv6连接。。。但如果这段代码在一个只有IPv4的系统上运行,它还会工作吗 更新:在本例中,绑定以URL的形式表示-用于配置ActiveMQ代理-因此我不能提供null根本不指定侦听地址。传递空值。然后,您将在主机上的IPv6和IPv4中的任何一个中的所有NIC上进行侦听,答案

我有一个Java程序监听端口上的传入连接。我一直使用
0.0.0.0
作为IP地址,这样它就可以在多址系统上的任何IP上接受连接。好的,任何IPv4地址,也就是说,所以我想切换到IPv6等效地址,
::0
,这样它也会接受传入的IPv6连接。。。但如果这段代码在一个只有IPv4的系统上运行,它还会工作吗


更新:在本例中,绑定以URL的形式表示-用于配置ActiveMQ代理-因此我不能提供
null

根本不指定侦听地址。传递空值。然后,您将在主机上的IPv6和IPv4中的任何一个中的所有NIC上进行侦听,

答案是否;它抛出一个
SocketException
。我实现了上面指定的
[::0]
实现,在我们的一台机器上引发了以下异常:

2014-06-02 11:51:14,050 [localhost-startStop-1] ERROR Could not initialize broker Failed to bind to server socket: tcp://[::0]:61616/broker due to: java.net.SocketException: Protocol family unavailable
java.io.IOException: Failed to bind to server socket: tcp://[::0]:61616/broker due to: java.net.SocketException: Protocol family unavailable
    at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
    at org.apache.activemq.transport.tcp.TcpTransportServer.bind(TcpTransportServer.java:133)
    at org.apache.activemq.transport.tcp.TcpTransportFactory.doBind(TcpTransportFactory.java:56)
    at org.apache.activemq.transport.TransportFactorySupport.bind(TransportFactorySupport.java:40)
    at org.apache.activemq.broker.BrokerService.createTransportConnector(BrokerService.java:2294)
    at org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:289)
    at org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:279)
    [...]

啊,好吧,值得一试。

我记得这是一个非常有记录的问题。有没有可能你正在使用FreeBSD?没有窗户或红帽。。。虽然我真的希望它不依赖于操作系统!这是Java问题还是ActiveMQ问题?我知道使用
0.0.0.0
适用于IPv4,而
::0
适用于IPv4和IPv6,这不是ActiveMQ特有的。我不认为这是ActiveMQ的问题,除了必须指定一些内容而不是
null
。我只是担心如果我在只使用IPv4的环境中使用IPv6表单,可能会出现一些问题。。。或者Java可能足够聪明来处理它。我不知道是哪个,请澄清。谁以这种方式使用此URL?我不知道Java中有哪一个地方通过URL指定了侦听地址。