使用 IPv6 在 Java 中进行套接字编程
Socket Programming in Java using IPv6
我是网络编程的新手,我有几个问题,但我在任何地方都找不到。
在建立连接时,我不明白 IPv4 和 IPv6 之间的代码是否存在差异。
示例代码:
Socket socket = new Socket(“127.0.0.1”, 5000)
据我了解,以上代码用于IPv4。但是,如果我想使用 IPv6,如何初始化套接字?
I don't understand if there is a difference in code between ipv4 and ipv6, when establishing connection.
差别不大
如果要使用显式 IPv6 地址,通常只需在 IPv6 syntax.
中使用 IP 地址字符串实例化 Socket
如果您使用 DNS 名称,则可用的网络堆栈将决定您是使用 IPv4 还是 IPv6:
- 如果只有一个堆栈受支持(OS)并且可用,则使用它。
- 如果两个堆栈都可用,
java.net.preferIPv4Stack
属性 的设置决定使用哪个。
有关详细信息,请阅读 Oracle Java 文档中的 Networking IPv6 User Guide。
For example this: Socket socket = new Socket("127.0.0.1", 5000)
is used for ip4, as I understood. But how do I initialize the socket if I want to use ip6?
Socket socket = new Socket("::1", 5000);
另请参阅:
我是网络编程的新手,我有几个问题,但我在任何地方都找不到。 在建立连接时,我不明白 IPv4 和 IPv6 之间的代码是否存在差异。
示例代码:
Socket socket = new Socket(“127.0.0.1”, 5000)
据我了解,以上代码用于IPv4。但是,如果我想使用 IPv6,如何初始化套接字?
I don't understand if there is a difference in code between ipv4 and ipv6, when establishing connection.
差别不大
如果要使用显式 IPv6 地址,通常只需在 IPv6 syntax.
中使用 IP 地址字符串实例化Socket
如果您使用 DNS 名称,则可用的网络堆栈将决定您是使用 IPv4 还是 IPv6:
- 如果只有一个堆栈受支持(OS)并且可用,则使用它。
- 如果两个堆栈都可用,
java.net.preferIPv4Stack
属性 的设置决定使用哪个。
有关详细信息,请阅读 Oracle Java 文档中的 Networking IPv6 User Guide。
For example this:
Socket socket = new Socket("127.0.0.1", 5000)
is used for ip4, as I understood. But how do I initialize the socket if I want to use ip6?
Socket socket = new Socket("::1", 5000);
另请参阅: