首页>>程序代码>>Java程序实现域名和IP地址的转换
Java程序实现域名和IP地址的转换
来源: http://7162187.blog.163.com 时间: 2015-03-27 21:03:44

为了获得所在网络的IP地址,或者网络中其他主机的IP地址,我们可以用 java.net软件包中的java.net.InetAddress类加以实现。例如,如果我们希望得到所在网络的IP地址,我们可以调用 InetAddress类中的getLocalHost()和getAddress()方法。getLocalHost()返回一个 InetAddress对象;而getAddress()则返回一个长度为4的字节数组(IP地址为4个字节)。?

如果要编制一个基于网络的应用程序,我们也许需要知道准备运行这个程序的主机的域名或IP地址。如果这个程序只在我们自己的主机上运行,而且我们也知道主机的域名或IP地址,则我们就可以这样进行:定义一个字符串常量即可,如:string localHost=“my-machine-name”。但大多情况下,我们编制

/*

* Program:sample1.java

*/

import java.net.*/;

public class GetName {

public static void main (String argv〔〕) throws Exception {

InetAddress host=null;

host=InetAddress.getLocalHost();

System.out.println(host.getHostName());

}}

的程序将在不同的主机上运行,这样才有实用价值。那么,象上面那样,定义一个localHost常量的方法就不太好用了。我们希望应用程序能够自动检测得到当前主机的域名。下面的程序说明了如何完成这一工作。

InetAddress是java.net软件开发包中的一个“现成”的类。在上面的代码中,我们可以说,其中的变量host就是一个InetAddress;InetAddress.getLocalHost()返回一个 InetAddress。例如,某个主机域名为“sample”,其IP地址为“128.118.2.10”,那么, InetAddress.getLocalHost()调用返回后,变量host的值就成了“sample/128.118.2.10”。如果只对其中的主机域名感兴趣,则可以调用getHostname()。

简单地说,IP地址是4个数字。为了得到数字形式的IP地址,我们可以将上面程序稍作改动。

/*

* Program:sample2.java

*/

import java.net.*;

public class GetAddress {

public static void main (String argv〔〕) throws Exception {

InetAddress host=null;

host=InetAddress.getLocalHost();

byte ip〔〕=host.getAddress();

for (int i=0;iif (i>0 System.out.print(".");

System.out.print(ip〔i〕& 0xff);

}

System.out.println();

}}

getAddress()返回一个长度为4的字节数组。例如,如果IP地址为“128.118.2.10”,则上面程序中的变量ip的最后内容为:

ip〔0〕=128ip〔1〕=118ip〔2〕=2ip〔3〕=10

Internet上的所有计算机都拥有一个唯一的IP地址和主机名。既然如此,我们要这些地址有什么用呢?这些地址可以帮助我们定位Internet上的固定资源,也可以使路由工作顺利地进行。

熟知UNIX的人都知道,UNIX系统中有一个复杂的DNS客户程序?? nslookup工具。利用nslookup,我们可以根据已知的IP地址,找到相应的主机名;也可以根据主机名,找到相应的IP地址。它可算是一个非常有用的工具。下面的示例程序则可以让我们找到Internet上所有可以访问主机的IP地址。

/*

* Program:nslookup.java

*/

import java.net.*/;

public class nslookup {

//Usage:java nslookup hostname

public static void main (String argv〔〕) throws Exception {

String host=argv〔0〕;

InetAddress address=null;

try {

address=InetAddress.getByName(host);

} catch(UnknownHostException e) {

System.out.println("Unknown host");

System.exit(0);

}

byte〔〕 ip〔〕=address.getAddress();

for (int i=0;iif (i>0 System.out.print(".");

System.out.print(ip〔i〕& Oxff);

}

System.out.println();

}}

本页地址:http://www.easytd.com/chengxudaima/d_15032721761.html

网友评论留言

验证码 换一张
上一篇: Struts2 s:if标签字符串截取的操作方法 下一篇:ThinkPHP if-elseif条件判断使用需要注意的问题