问题描述
我是网络编程的新手,我有几个问题,在任何地方都找不到。 建立连接时,我不明白IPv4和IPv6之间的代码是否有差异。
示例代码:
Socket socket = new Socket(“127.0.0.1”,5000)
据我了解,以上代码用于IPv4。但是,如果要使用IPv6,如何初始化套接字?
解决方法
在建立连接时,我不理解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 = new Socket("::1",5000);