Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » 技术文章库  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
话题被移动
该话题已被移动 - 九佰 , 2002-12-12 17:40
如果您尚不清楚该话题被移动的原因,请参考论坛规则以及本版公告或者联系本版版主。
作者 [j2se]利用JAVA获得IP地址的法子
sucretiger



发贴: 0
积分: 0
于 2002-12-12 10:27 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如何用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服务器进行交互。


Biubiu edited on 2002-12-12 15:29

作者 [re]利用JAVA获得IP地址的法子 [Re:sucretiger]
rox





发贴: 61
积分: 30
于 2002-12-12 20:38 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
这个是不是Java Networking (2rd)上面的呀?!
我好像看过。
不过,能够贴出来也一定很辛苦了!



作者 Re:[j2se]利用JAVA获得IP地址的法子 [Re:sucretiger]
mrfyh



发贴: 0
积分: 0
于 2003-03-01 23:25 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
怎么得到本机的广域网地址呢?包括代理的情况下,就如可查看对方IP功能的QQ!!!
哪们老兄请告之:fengyh@e-future.com.cn



作者 Re:[j2se]利用JAVA获得IP地址的法子 [Re:sucretiger]
liankai



发贴: 0
积分: 0
于 2003-03-03 13:20 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如何用聊天工具来查对方的IP地址。



flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923