首页 > 解决方案 > 使用 IPv6 的 Java 套接字编程

问题描述

我是网络编程的新手,我有几个问题,我在任何地方都找不到。在建立连接时,我不明白 IPv4 和 IPv6 之间的代码是否存在差异。

示例代码: Socket socket = new Socket(“127.0.0.1”, 5000)

据我了解,上述代码用于 IPv4。但是如果我想使用 IPv6,我该如何初始化套接字呢?

标签: javasocketsserverclientipv6

解决方案


在建立连接时,我不明白 ipv4 和 ipv6 之间的代码是否存在差异。

差别不大。

  • 如果要使用显式 IPv6 地址,通常只需使用IPv6 语法Socket中的 IP 地址字符串实例化。

  • 如果您使用 DNS 名称,那么可用的网络堆栈将确定您使用的是 IPv4 还是 IPv6:

    • 如果(操作系统)仅支持一个堆栈并且可用,则使用该堆栈。
    • 如果两个堆栈都可用,则java.net.preferIPv4Stack属性的设置确定使用哪个堆栈。

有关更多信息,请阅读Oracle Java 文档中的Networking IPv6 User Guide

例如:Socket socket = new Socket("127.0.0.1", 5000)据我了解,用于 ip4。但是如果我想使用 ip6,我该如何初始化套接字呢?

Socket socket = new Socket("::1", 5000);

另请参阅:localhost 和 0.0.0.0 的 IPV6 是什么?


推荐阅读