我是网络编程的新手,有一些问题在任何地方都找不到。我不明白在建立连接时,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?