快速业务通道

使用Java来实现域名和IP地址转换的操作 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
样进行:定义一个字符串常量即可,如: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常量的方法就不太好用了。我们希望应用程序能够自动检测得到当前主机的域名。下面的程序说明了如何完成这一工作。

使用Java来实现域名和IP地址转换的操作(2)

时间:2009-12-07

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;i<ip.length;i++) { if (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;i<ip.length;i++) { if (i>0 System.out.print("."); System.out.print(ip〔i〕& Oxff); } System.out.println(); }}

在JDK 1.0.2(Java Develop Kit-Java开发工具包中,编制一个程序,将主机名转换为IP地址并不太容易。这是由于InetAddress类中getHostName方法中有一个bug。这个bug在JDK 1.1 beta版中得以修正,所以下列代码在JDK 1.1中应该可以运行。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号