随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0
数据加载中……

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

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

上一篇: 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地址



Android开发完全讲义(第2版)(本书版权已输出到台湾)

http://product.dangdang.com/product.aspx?product_id=22741502



Android高薪之路:Android程序员面试宝典 http://book.360buy.com/10970314.html


新浪微博:http://t.sina.com.cn/androidguy   昵称:李宁_Lining

posted on 2009-04-21 12:33 银河使者 阅读(6455) 评论(0)  编辑  收藏 所属分类: java 原创网络编程


只有注册用户登录后才能发表评论。


网站导航: