Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址

简介: 本文为原创,如需转载,请注明作者和出处,谢谢!上一篇: Java网络编程从入门到精通(6):使用getCanonicalHostName方法获得主机名    这个方法用来得到主机的IP地址,这个IP地址可能是IPv4的地址,也可能是IPv6的地址。

本文为原创,如需转载,请注明作者和出处,谢谢!

上一篇: Java网络编程从入门到精通(6):使用getCanonicalHostName方法获得主机名

  
这个方法用来得到主机的IP地址,这个IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定义如下:

public  String getHostAddress()

无论InetAddress对象是使用哪种方式创建的,getHostAddress方法都不会访问DNS服务器。如果想访问使用IPv6地址的远程主机,需要在操作系统上安装IPv6协议。下面是Windows 2003上安装IPv6协议的步骤:

第一步:打开本地连接属性对话框。如图1所示

图1 “本地连接”属性对话框


 
第二步:点击安装按钮,出现选择网络组件类型对话框,选择协议选项后,点击添加按钮,出现如图2选择网络协议对话框,选择“Microsoft TCP/IP 版本6”,最后点击确定按钮。

图2  “选择网络协议”对话框

除了使用图形化界面来安装IPv6外,还可以使用如下命令行来安装IPv6

netsh interface ipv6 install

下面的代码演示了如何利用getHostAddress得到IPv4IPv6地址,以及如何得到本机的所有IP地址(包括IPv4IPv6地址)。

package mynet;

import  java.net. * ;

public   class MyIP
{
    
public   static   void  main(String[] args)  throws  Exception
    {
        
//  输出IPv4地址
        InetAddress ipv4Address1  =  InetAddress.getByName( " 1.2.3.4 " );
        System.out.println(
" ipv4Address1:  "   +  ipv4Address1.getHostAddress());
        InetAddress ipv4Address2 
=  InetAddress.getByName( " www.ibm.com " );
        System.out.println(
" ipv4Address2:  "   +  ipv4Address2.getHostAddress());
        InetAddress ipv4Address3 
=  InetAddress.getByName( " myuniverse " );
        System.out.println(
" ipv4Address3:  "   +  ipv4Address3.getHostAddress());
        
//  输出IPv6地址
        InetAddress ipv6Address1  =  InetAddress.getByName( " abcd:123::22ff " );
        System.out.println(
" ipv6Address1:  "   +  ipv6Address1.getHostAddress());
        InetAddress ipv6Address2 
=  InetAddress.getByName( " www.neu6.edu.cn " );
        System.out.println(
" ipv6Address2:  "   +  ipv6Address2.getHostAddress());
        
//  输出本机全部的IP地址
        InetAddress Addresses[]  =  InetAddress.getAllByName( " myuniverse " );
        
for  (InetAddress address : Addresses)
            System.out.println(
" 本机地址: "   +  address.getHostAddress());
    }
}

在上面代码使用了www.neu6.edu.cn作为域名,这个域名是东北大学用于测试IPv6地址的域名。下面是其他一些可用于测试IPv6的域名,读者可以使用ping命令或例程3-9来测试这些域名。

www6.whu.edu.cn (武汉大学)
www.jlu6.edu.cn(吉林大学)
www6.usst.edu.cn(上海理工大学)
www.fudan6.edu.cn(复旦大学)

在访问这些域名之前,本机必须使用上述的方法或命令行安装IPv6,否则getByName方法将抛出UnknownHostException异常。

    运行结果:

ipv4Address1:  1.2.3.4
ipv4Address2: 
129.42.60.212
ipv4Address3: 
192.168.18.10
ipv6Address1: abcd:
123 : 0 : 0 : 0 : 0 : 0 :22ff
ipv6Address2: 
2001 :da8: 9000 :b255: 200 :e8ff:feb0:5c5e
本机地址:
192.168.18.10
本机地址:
192.168.83.1
本机地址:
192.168.189.1
本机地址:
193.10.10.10
本机地址:
0 : 0 : 0 : 0 : 0 : 0 : 0 : 1

在上面的运行结果中的IP地址192.168.18.10192.10.10.10是和本机网卡绑定的两个IP,而192.168.83.1192.168.189.1VMware虚拟机软件在本机安装的两个虚拟网卡的地址。最后一个IPv6地址0:0:0:0:0:0:0:1是代表本机的IPv6网址,相当于IPv4地址的127.0.0.1。读者可以使用如下命令行添加IPv6地址和删除IPv6

添加IPv6地址

netsh interface ipv6 add address  " 本地连接 "  aa:bb::cc

删除IPv6

netsh interface ipv6 uninstall

注意:安装IPv6不需要重新启动计算机,但添加IPv6地址或删除IPv6后,必须重新启动计算机才能生效。

下一篇: Java网络编程从入门到精通(8):用getAddress方法获得IP地址

国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

目录
相关文章
|
2月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
333 0
|
3月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
429 0
|
4月前
|
JSON 移动开发 网络协议
Java网络编程:Socket通信与HTTP客户端
本文全面讲解Java网络编程,涵盖TCP与UDP协议区别、Socket编程、HTTP客户端开发及实战案例,助你掌握实时通信、文件传输、聊天应用等场景,附性能优化与面试高频问题解析。
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
201 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
226 1
|
3月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
598 3
|
4月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
471 0
|
4月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
4月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
3月前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
939 0

热门文章

最新文章