gpt4 book ai didi

java.net.InetSocketAddress 和 java.net.SocketAddress 是否支持 IPv6?

转载 作者:行者123 更新时间:2023-11-29 05:49:55 25 4
gpt4 key购买 nike

java.net.InetSocketAddress 和 java.net.SocketAddress 是否支持 IPv6?

因为我研究和尝试的两个类无法让我查看 ipv6 连接,所以它只能查看 ipv4 连接,有人尝试过并能够编辑代码吗?

最佳答案

对您的问题的部分回答,即使它可能来不及立即使用 =)。

我有以下几行代码尝试连接到两个不同的 IP 地址:

// Defined port must be 13; that is NIST's default listening port.
SocketAddress socketAddress = new InetSocketAddress(currentIpAddress, 13);
socket = new Socket();
socket.connect(socketAddress, nistServerTimeoutInMilliseconds);

第一个地址工作正常:'206.246.122.250'

第二个地址在第三行抛出“java.net.SocketException: Protocol family unavailable”。该地址是“2610:20:6F15:15::27”。

一开始以为是Java 1.7的InetSocketAddress不支持IPv6的问题,后来发现Java中其实有两个继承自InetAddress类的类:Inet4Address和Inet6Address

http://docs.oracle.com/javase/6/docs/api/java/net/Inet4Address.html http://docs.oracle.com/javase/7/docs/api/java/net/Inet6Address.html

这解释了为什么我的代码在尝试使用 IPv6 格式构造 Inet4Address 时失败了,它也可以解释您的问题。

希望这有帮助 =)

附言InetAddress 和 InetSocketAddress 不是同一个类,但通过测试您正在处理的 IP 地址类型,可能有一种方法可以解决该问题。

关于java.net.InetSocketAddress 和 java.net.SocketAddress 是否支持 IPv6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com