java - 使用 IPv6 的 Java 套接字编程
问题描述
我是网络编程的新手,我有几个问题,我在任何地方都找不到。在建立连接时,我不明白 IPv4 和 IPv6 之间的代码是否存在差异。
示例代码:
Socket socket = new Socket(“127.0.0.1”, 5000)
据我了解,上述代码用于 IPv4。但是如果我想使用 IPv6,我该如何初始化套接字呢?
解决方案
在建立连接时,我不明白 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);
推荐阅读
- azure-devops - 有没有办法将 Selenium 测试与 Azure DevOps 测试用例相关联?
- javascript - 如何使用 sequelize-hierarchy 在 Node.js 中对同一级别的项目进行排序?
- ros - 当给定导航目标时,胡椒会原地旋转
- hive - Hive 中以秒为单位的日期差异不正确
- windows - Windows App 版本:认证完成后可以取消(发布手册)
- python - 在python中交换大小写的脚本
- javascript - 如何使用 justifyContent 和 alignItems 与 contentContainerStyle 等反应原生平面列表
- react-native - Google 地图未使用新的 API 密钥加载
- reactjs - 位跟踪 React 组件的全局上下文
- html - 使用 moment.js 来指示 mongoDB/mongoose 上次更新的时间?