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时(如上所述),我只是超时了。 我不确定这不是我的环境的支持或问题。 我想应该有一些异常表明在连接之前没有支持抛出,最后没有超时。
有什么想法吗?感谢。
答案 0 :(得分:3)
IPv4和IPv6是不同的协议。你不能混合它们。您只能从IPv4地址连接到另一个IPv4地址,或从IPv6地址连接到另一个IPv6地址。
答案 1 :(得分:0)
可以在unix机器上创建单独的套接字侦听IPv4和IPv6。 http://msdn.microsoft.com/en-us/library/windows/desktop/bb513665%28v=vs.85%29.aspx