网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  用java获得ip地址     
  文章作者:未知  文章来源:水木森林  
  查看:69次  录入:管理员--2007-11-17  
 

如何用java获得一个域名的ip地址呢?提供这个功能的类叫做java.net.inetaddress。我们假设现在有这样一个域名,它用一个静态的getbyname来重新获得一个inetaddress,然后得到可以读出的ip地址。下面的代码是非常基本的命令行。



import java.net.inetaddress;

import java.net.unknownhostexception;

public class nslookup {

static public void main(string[] args) {

try {

inetaddress address = inetaddress.getbyname(args[0]);

system.out.println(args[0]+"

: "+address.gethostaddress());

}

catch(unknownhostexception uhe) {

system.err.println("unable to find: "+args[0]);

}

}

}



inetaddress也可以通过使用getaddress()来获得ip地址,但是它的返回值是一个4个字节的数组。因此尽管getaddress()在获得ip方面是有用的,但却不适于用来输出。



上面的命令的输出结果看起来就是这样:



bash$ java code.nslookup www.sun.com

www.sun.com: 192.18.97.241

有时一个域名会包含不止一个ip地址,比如微软的web服务器,这是为了保持负载平衡。inetaddress提供了一种可以得到一个域名的所有ip地址的方法。让我们来考虑以下代码:

import java.net.inetaddress;

import java.net.unknownhostexception;

public class nslookup {

static public void main(string[] args) {

try {

string name = args[0];

inetaddress[] addresses = inetaddress.getallbyname(name);

for(int i=0; i<addresses.length; i++) {

system.out.println(name+"["+i+"]

: "+address.gethostaddress());

}

} catch(unknownhostexception uhe) {

system.err.println("unable to find: "+args[0]);

}

}

}

对于www.sun.com,将会输出:



bash$ java code.nslookup www.sun.com

www.sun.com[0]: 192.18.97.241

然而,对于www.microsoft.com,将会输出:



bash$ javad code/nslookup.java

www.microsoft.com

www.microsoft.com[0]: 207.46.230.218

www.microsoft.com[1]: 207.46.197.101

www.microsoft.com[2]: 207.46.230.229

www.microsoft.com[3]: 207.46.197.113

www.microsoft.com[4]: 207.46.230.219

www.microsoft.com[5]: 207.46.230.220

 www.microsoft.com[6]: 207.46.197.102



由于inetaddress,localhost必须要特别处理。如果字符串“localhost”直接进入nslookup程序的原始版本,就会得到以下相当无用的结果:

bash$ java code.nslookup www.sun.com

localhost: 127.0.0.1

我们可以手动寻找本地地址:



try {

inetaddress localhost = inetaddress.getlocalhost();

system.out.println

("localhost: "+localhost.gethostaddress());

system.out.println

("localhost: "+localhost.gethostname());

} catch(unknownhostexception uhe) {

system.err.println

("localhost not seeable. something is odd. ");

}

这里是一个输出的例子:

localhost: 192.168.13.15

localhost: crab

本地主机的域名并没有返回完整的该机器的域名,这是因为它取决于该机器的设置。

最后,inetaddress可能会被用来将ip地址转变为这些地址的域名,这对于分析web日志是很有用的。inetaddress使得开发者们可以轻松的和域名、ip地址打交道,并且使他们可以不必和dns服务器进行交互。

 
 
上一篇: 用java绘制k线    下一篇: 用java将大图片文件转换出小的缩略图文件
  相关文档
对于java开发人员必须遵从的十大基本法则 (1) 09-10
基础应用:Java Web中三层架构配置入门 08-07
初学者如何开发出高质量的j2ee系统 11-16
选取合适的dhtml grid方案 11-17
sun用appserver 8.0反击对手 11-17
解决jsp开发中web程序中文显示三种方法 11-10
几个有参考价值的java问题 11-17
在java中应用设计模式之factory method 11-17
java中finalize()的另类用法(1) 11-16
修正java中wait方法超时语意模糊性的一种方案 11-17
最大化j2ee和数据库交互操作的性能 11-16
按位“或”运算符 (|) 11-16
java核心代码例程之:helloworld.java(2) 11-17
解析java编程中的string对象的数据类型 11-16
java编程实现列表框元素动态变化 11-16
用内嵌类减少 java 程序设计中的混乱 11-17
java基础之关键字 11-17
jre与jdk在启动应用服务器中的作用 11-17
j2ee基础应用:j2ee中sql语句自动构造方法 04-22
vj6.0的使用方法(4)application调试过程 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息