使用 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);

另请参阅: