首页 文章

Java绑定到仅限IPv4的机器上的:: 0?

提问于
浏览
0

我有一个Java程序,用于侦听端口上的传入连接 . 我一直在使用 0.0.0.0 作为IP地址,以便它接受多宿主系统上任何IP上的连接 . 好吧,任何IPv4地址,也就是说,我想切换到IPv6等价物, ::0 ,所以它也会接受传入的IPv6连接......但是如果这个代码然后在纯IPv4系统上运行,它还能用吗?

UPDATE :在这种情况下,绑定以URL的形式表示 - 它's to configure an ActiveMQ broker - so I can' t提供 null .

2 回答

  • 0

    根本不要指定监听地址 . 传递null . 然后,您将监听主机上存在的IPv6和IPv4中的所有NIC,

  • 0

    答案是不;它会抛出一个 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)
        [...]
    

    好吧,值得一试 .

相关问题