本文为原创,如需转载,请注明作者和出处,谢谢!
上一篇: 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得到IPv4和IPv6地址,以及如何得到本机的所有IP地址(包括IPv4和IPv6地址)。
<!--<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.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地址
<!--<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网络编程;Java网络基本类 ---InetAddress类;import .*; public class IPAddressDemo { public static void main(String[] args) { try { InetAddress localAddr = InetAddress.getLocalHost();//获得本机...
InetAddress类 概念: 表示互联网协议(P)地址对象,封装了与该P地址相关的所有信息,并提供获取信息的常用方法。 方法: 1.public static InetAddress ...4.public String getHostAddress()获取IP地址字符串 5.publ
Delphi获取电脑IP地址、MAC网卡物理地址、本机名称等,网络相关信息获取,基本的Delphi网络参数获取代码,高手请绕行吧。通过调用Api函数gethostname,gethostbyname,wsastartup,uses中加winsock,介绍wsadata,...
最近在学习soket编程中,看到有需要获取到IP地址之类的需求,所以就去看了下如何获取到主机名的IP地址。 其实就是需要用到一个类InetAddress。他是在java.net包下面。 InetAddress类的对象用于IP地址和域名,该类...
这是有关GetHostEntry和GetHostAddress两个函数的使用的相关抓包分析结果
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; ...
如下所示: InetAddress addr = InetAddress.getLocalHost();...以上这篇jsp获得本地及serverIP的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
//返回ip ip = address.getHostAddress(); dis = new DataInputStream(is); //读取上传过过来的文件名 String fileName = dis.readUTF(); System.out.println("服务器接收到自"+ip+"的"+fileName+"文件"); //将接收...
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=...
* 获得windows下指定地址硬盘空间大小 * * @param dirPath * @return */ final private long getDiskForWindowsInfo(String dirPath) { try { long space = -1; Process process; Runtime run = Runtime.getRuntime...
/// 不过能获取到具体的IP /// /// <returns></returns> public static List<IPAddress> GetByGetHostAddresses() { try { IPAddress[] adds = Dns.GetHostAddresses(Dns.GetHostName()); return adds == ...
//并将name和ip用":"分开,在服务器端将用一个 //StringTokenizer类来读取数据 String userinfo = nameTextField.getText() + Constants.SEPERATOR + InetAddress.getLocalHost()....