`
seara
  • 浏览: 625631 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

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

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->publicStringgetHostAddress()

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

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

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


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

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

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->netshinterfaceipv6install

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->package mynet;

importjava.net.*;

publicclass MyIP
{
publicstaticvoidmain(String[]args)throwsException
{
//输出IPv4地址
InetAddressipv4Address1=InetAddress.getByName("1.2.3.4");
System.out.println(
"ipv4Address1:"+ipv4Address1.getHostAddress());
InetAddressipv4Address2
=InetAddress.getByName("www.ibm.com");
System.out.println(
"ipv4Address2:"+ipv4Address2.getHostAddress());
InetAddressipv4Address3
=InetAddress.getByName("myuniverse");
System.out.println(
"ipv4Address3:"+ipv4Address3.getHostAddress());
//输出IPv6地址
InetAddressipv6Address1=InetAddress.getByName("abcd:123::22ff");
System.out.println(
"ipv6Address1:"+ipv6Address1.getHostAddress());
InetAddressipv6Address2
=InetAddress.getByName("www.neu6.edu.cn");
System.out.println(
"ipv6Address2:"+ipv6Address2.getHostAddress());
//输出本机全部的IP地址
InetAddressAddresses[]=InetAddress.getAllByName("myuniverse");
for(InetAddressaddress:Addresses)
System.out.println(
"本机地址:"+address.getHostAddress());
}
}

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->www6.whu.edu.cn(武汉大学)
www.jlu6.edu.cn(吉林大学)
www6.usst.edu.cn(上海理工大学)
www.fudan6.edu.cn(复旦大学)

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

运行结果:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->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地址

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->netshinterfaceipv6addaddress"本地连接"aa:bb::cc

删除IPv6

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->netshinterfaceipv6uninstall

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

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

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

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

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

分享到:
评论

相关推荐

    Java高级程序设计:第14章-基于Socket的网络编程.pptx

    Java网络编程;Java网络基本类 ---InetAddress类;import .*; public class IPAddressDemo { public static void main(String[] args) { try { InetAddress localAddr = InetAddress.getLocalHost();//获得本机...

    java 基于TCP网络编程

    InetAddress类 概念: 表示互联网协议(P)地址对象,封装了与该P地址相关的所有信息,并提供获取信息的常用方法。 方法: 1.public static InetAddress ...4.public String getHostAddress()获取IP地址字符串  5.publ

    MAC/网卡IP地址获取 Delphi程序.rar

    Delphi获取电脑IP地址、MAC网卡物理地址、本机名称等,网络相关信息获取,基本的Delphi网络参数获取代码,高手请绕行吧。通过调用Api函数gethostname,gethostbyname,wsastartup,uses中加winsock,介绍wsadata,...

    Android开发之InetAddress基础入门简介与源码实例

    最近在学习soket编程中,看到有需要获取到IP地址之类的需求,所以就去看了下如何获取到主机名的IP地址。 其实就是需要用到一个类InetAddress。他是在java.net包下面。 InetAddress类的对象用于IP地址和域名,该类...

    对GetHostEntry和GetHostAddress的抓包分析结果

    这是有关GetHostEntry和GetHostAddress两个函数的使用的相关抓包分析结果

    Java聊天室源代码

    import java.awt.*; import java.awt.event.*; import java.net.*; public class Chat { Frame f = new Frame("聊天室"); TextField tfIP = new TextField(15); List lst = new List(6); DatagramSocket ds; ...

    jsp获得本地及serverIP的简单方法

    如下所示: InetAddress addr = InetAddress.getLocalHost();...以上这篇jsp获得本地及serverIP的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

    java文件上传程序.doc

    //返回ip ip = address.getHostAddress(); dis = new DataInputStream(is); //读取上传过过来的文件名 String fileName = dis.readUTF(); System.out.println("服务器接收到自"+ip+"的"+fileName+"文件"); //将接收...

    asp.net getRemoteAddr()与 getRemoteHost()的区别

    getRemoteAddr():获得客户端的IP地址 getRemoteHost():获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址 InetAddress ia = InetAddress.getLocalHost(); String iad = ia.getHostAddress();//主机IP ...

    查看本机网络信息

    利用多进程,调用DOS命令查看网络信息 public class ipconfig extends JFrame{ static TextField ip_text=new TextField(15); static TextField mac_text=new TextField(15); static TextField subnetmask_text=...

    jsp探针 ver0.1

    * 获得windows下指定地址硬盘空间大小 * * @param dirPath * @return */ final private long getDiskForWindowsInfo(String dirPath) { try { long space = -1; Process process; Runtime run = Runtime.getRuntime...

    C#获取本地IP的四种方式示例详解

    /// 不过能获取到具体的IP /// /// &lt;returns&gt;&lt;/returns&gt; public static List&lt;IPAddress&gt; GetByGetHostAddresses() { try { IPAddress[] adds = Dns.GetHostAddresses(Dns.GetHostName()); return adds == ...

    聊天系统计算机相关论文

    //并将name和ip用":"分开,在服务器端将用一个 //StringTokenizer类来读取数据 String userinfo = nameTextField.getText() + Constants.SEPERATOR + InetAddress.getLocalHost()....

Global site tag (gtag.js) - Google Analytics