使用Java开发兼容IPv6的网络应用程序 - 编程入门网
java.net 包对于 IP 地址的 良好封装,从而使得将 Java 应用从 IPv4 环境移植到 IPv4/IPv6 双环境,或者 纯 IPv6 环境变得异常简单。通常我们需要做的仅是检查代码并移除明码编写的 IPv4 地址,用主机名来替代则可。
除此以外,对于一些特殊的需求,Java 还提供了 InetAddress 的两个扩展类 以供使用:Inet4Address 和 Inet6Address,其中封装了对于 IPv4 和 IPv6 的 特殊属性和行为。然而由于 Java 的多态特性,使得程序员一般只需要使用父类 InetAddress,Java 虚拟机可以根据所封装的 IP 地址类型的不同,在运行时选 择正确的行为逻辑。所以在多数情况下,程序员并不需要精确控制所使用的类型 及其行为,一切交给 Java 虚拟机即可。 具体的新增类型及其新增方法,请具体参阅 Sun 公司的 JavaDoc。 另外,在 IPv4/IPv6 双环境中,对于使用 Java 开发的网络应用,比较值得 注意的是以下两个 IPv6 相关的 Java 虚拟机系统属性。
preferIPv4Stack(默认 false)表示如果存在 IPv4 和 IPv6 双栈,Java 程 序是否优先使用 IPv4 套接字。默认值是优先使用 IPv6 套接字,因为 IPv6 套 接字可以与对应的 IPv4 或 IPv6 主机进行对话;相反如果优先使用 IPv4,则只 不能与 IPv6 主机进行通信。 preferIPv6Addresses(默认 false)表示在查询本地或远端 IP 地址时,如 果存在 IPv4 和 IPv6 双地址,Java 程序是否优先返回 IPv6 地址。Java 默认 返回 IPv4 地址主要是为了向后兼容,以支持旧有的 IPv4 验证逻辑,以及旧有 的仅支持 IPv4 地址的服务。 总结 从计算机技术的发展、因特网的规律和网络的传输速率来看,IPV4 都已经不 适用了。其中最主要的问题就是 IPV4 的 32 比特的 IP 地址空间已经无法满足 迅速膨胀的因特网规模,但是 IPv6 的引入为我们解决了 IP 地址近乎枯竭的问 题。本文对 IPv6 地址做了一些基本的介绍,着重介绍了如何使用 Java 开发兼 容 IPv6 的网络应用程序,包括如何验证 IPv6 地址,如何正规化 IPv6 地址的 表示,如何获取本机 IPv6 的地址,以及在 IPv4/IPv6 双地址环境下的网络选择 和测试,同时作者结合在日常工作中使用的 Java 代码片段,希望呈现给读者一 个全方位的、具有较强实用性的文本介绍,也希望本文能给读者在以后使用 Java 开发 IPv6 兼容程序的过程中带来一些帮助。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |