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

简介:
  这个方法用来得到主机的 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 得到IPv4 IPv6 地址,以及如何得到本机的所有IP 地址(包括IPv4 IPv6 地址)。
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.10 192.10.10.10 是和本机网卡绑定的两个IP ,而192.168.83.1 192.168.189.1 VMware 虚拟机软件在本机安装的两个虚拟网卡的地址。最后一个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后,必须重新启动计算机才能生效。







 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214761,如需转载请自行联系原作者

相关文章
|
4月前
|
JSON 移动开发 网络协议
Java网络编程:Socket通信与HTTP客户端
本文全面讲解Java网络编程,涵盖TCP与UDP协议区别、Socket编程、HTTP客户端开发及实战案例,助你掌握实时通信、文件传输、聊天应用等场景,附性能优化与面试高频问题解析。
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
407 0
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
201 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
226 1
|
2月前
|
机器学习/深度学习 数据采集 边缘计算
基于灰色神经网络的预测方法
基于灰色神经网络的预测方法
178 0
|
3月前
|
算法 Python
【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)
【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)
102 0
|
4月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
219 0
|
5月前
|
存储 Linux 容器
【Container App】在容器中抓取网络包的方法
本文介绍在Azure Container App中安装tcpdump抓取网络包,并通过Storage Account上传抓包文件的方法。内容包括使用curl和nc测试外部接口连通性、长Ping端口、安装tcpdump、抓取网络包、以及通过crul命令上传文件至Azure Storage。适用于需要分析网络请求和排查网络问题的场景。
208 1
|
5月前
|
机器学习/深度学习 边缘计算 算法
基于BP神经网络的电池容量预测方法研究
基于BP神经网络的电池容量预测方法研究
|
7月前
计算网络号的直接方法
子网掩码用于区分IP地址中的网络部分和主机部分,连续的“1”表示网络位,“0”表示主机位。例如,255.255.255.0 的二进制为 11111111.11111111.11111111.00000000,前24位是网络部分。通过子网掩码可提取网络号,如 IP 192.168.1.10 与子网掩码 255.255.255.0 的网络号为 192.168.1.0。此外,文档还介绍了十进制与二进制间的转换方法,帮助理解IP地址的组成与计算。
519 11