我有一个Java程序,可以监听端口上的传入连接。我一直使用0.0.0.0作为IP地址,这样它就可以在多主机系统上接受任何IP上的连接。嗯,任何IPv4地址,也就是说,我想切换到IPv6等效的::0,所以它也会接受传入的IPv6连接.但是如果这个代码是运行在IPv4 4系统上的话,它还能工作吗?
UPDATE:在本例中,绑定是以URL的形式表示的--配置ActiveMQ代理--所以我不能提供null。
发布于 2014-06-02 19:09:42
答案是否定的;它抛出一个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)
[...]嗯,值得一试。
发布于 2014-05-29 20:40:04
根本不要指定一个监听地址。传递空。然后,您将在主机上收听IPv6和IPv4中的所有NIC,
https://stackoverflow.com/questions/23942453
复制相似问题