【问题标题】:Socket Programming in Java using IPv6使用 IPv6 的 Java 套接字编程
【发布时间】:2020-12-26 13:59:39
【问题描述】:

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

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

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

【问题讨论】:

  • 在 IPv6 中将"::1" 用于127.0.0.1

标签: java sockets server client ipv6


【解决方案1】:

不明白在建立连接时,ipv4和ipv6的代码是否有区别。

差别不大。

  • 如果您想使用显式 IPv6 地址,您通常只需在 IPv6 syntax 中使用 IP 地址字符串实例化 Socket

  • 如果您使用 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 socket = new Socket("::1", 5000);

另见:What is IPV6 for localhost and 0.0.0.0?

【讨论】:

    猜你喜欢
    • 2015-02-01
    • 2021-12-01
    • 1970-01-01
    • 2017-04-14
    • 2013-10-09
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多