使用IPv6的Java套接字编程



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

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

据我所知,上面的代码用于IPv4。但是,如果我想使用IPv6,我该如何初始化套接字?

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

差别不大。

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

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

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

有关详细信息,请参阅Oracle Java文档中的Networking IPv6 User Guide(网络IPv6用户指南(。

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

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

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

相关内容

  • 没有找到相关文章

最新更新