InetSocketAddress ipv4 = ...; // the IPv4 address
InetSocketAddress ipv6 = ...; // the IPv6 address
Socket sock = ...; // initialize a socket
sock.bind(ipv4);
sock.connect(ipv6, 0);
双方都支持IPv4 / IPv6双栈 .
Java可以支持这种连接吗?
如果JDK可以尝试将绑定地址转换为IPv6地址或将目标地址转换为IPv4地址?
我连接到IPv4时尝试了绑定IPv6的情况 . JDK在连接过程中将绑定IPv6地址转换为IPv4地址 . 但是当连接到IPv6时尝试绑定IPv4时(如上所述),我只是超时了 . 我不确定这不是我的环境的支持或问题 . 我想应该有一些异常表明在连接之前不支持抛出,最后不是暂停 .
任何的想法?谢谢 .
2 回答
IPv4和IPv6是不同的协议 . 你不能混合它们 . 您只能从IPv4地址连接到另一个IPv4地址,或从IPv6地址连接到另一个IPv6地址 .
可以在unix机器上创建单独的套接字侦听IPv4和IPv6 . http://msdn.microsoft.com/en-us/library/windows/desktop/bb513665%28v=vs.85%29.aspx