LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2746|回复: 9

有主机名获得其IP

[复制链接]
发表于 2003-5-22 15:25:55 | 显示全部楼层 |阅读模式
  1. import java.net.*;
  2. public class GetIP
  3. {
  4.     public static void main(String [] args)
  5.     {
  6.         InetAddress address = null;
  7.         if (args.length == 0)
  8.         {
  9.             System.out.println("usage:GetIP host");
  10.             System.exit(1);
  11.     }
  12.     try
  13.     {
  14.         address = InetAddress.getByName(args[0]);
  15.     }
  16.     catch (UnknowHostException e)
  17.     {
  18.         System.out.println("I can't find " + args[0]);
  19.         System.exit(2);
  20.     }
  21.     System.out.println(address.getHostName() + "-" +
  22.     address.getHostAddress());
  23.    
  24.     System.exit(0);
  25.     }
  26. }
复制代码
发表于 2003-5-22 17:05:13 | 显示全部楼层
高手,高手!!有机会我也的学学java。
发表于 2003-5-22 18:13:19 | 显示全部楼层
好,鼓励一下。看来java写一个这样的程序简单多了。用c写得用gethostbyname函数才行。
 楼主| 发表于 2003-5-22 18:18:58 | 显示全部楼层
最初由 kj501 发表
好,鼓励一下。看来java写一个这样的程序简单多了。用c写得用gethostbyname函数才行。


enen.  其实用JAVA写的不一定就不行。。

BTW: 这是我看书超的。我改进了一下。
看来大家都没有complie过。
发表于 2003-5-22 18:33:58 | 显示全部楼层
我只会C,C++也懂一点。对于java,我可是外行,有问题还要向兄弟请教,呵呵。。。
 楼主| 发表于 2003-5-22 18:38:03 | 显示全部楼层

呵呵。该一下。


  1. import java.net.*;

  2. public class HostNamet2IP
  3. {
  4.     public static void main(String [] args)
  5.     {
  6.         if (args.length == 0)
  7.         {
  8.             System.out.println("Usage: Get the IP of the host that you specified.");
  9.             System.exit(1);
  10.     }
  11.     try
  12.     {
  13. // 注意这里要声明成对象数组喔。 InetAddress []
  14.                     InetAddress[] address = InetAddress.getAllByName(args[1]);
  15.                     for (int i=0; i<address.length; i++)
  16.                             System.out.println(address[i]);
  17.     }
  18.     catch (UnknownHostException e)
  19.     {
  20.         System.out.println("I can't find " + args[0]);
  21.         System.exit(2);
  22.     }
  23.    
  24.     System.exit(0);
  25.     }
  26. }
复制代码
 楼主| 发表于 2003-5-22 18:39:43 | 显示全部楼层
 楼主| 发表于 2003-5-22 18:52:33 | 显示全部楼层

小结

在这一贴里。你应该学会用静态的方法来创建一个InetAddress实例。

getLocalHost:  方法返回指向本地计算机的InetAddress对象。
getByName   : 方法返回一个指定主机的InetAddress对象。名字可以代表IP地址的字符穿或者是真是的主机名字。
getAllByName:  方法查找与指定名字相匹配的所有地址。这个方法反回一个对象数组。

如果出错,回抛出异常: UnknownHostException(如果名字无法解析).
发表于 2003-5-22 21:11:05 | 显示全部楼层
粘贴的这些代码都很有用,谢谢。
下次要粘贴代码时要注意保持缩进,方法在置顶的贴子中有。
btw:个人主页上好象没有多少东西呀,想点什么办法丰富一下。
发表于 2003-5-22 21:48:23 | 显示全部楼层
InetAddress 对象是不能通过 new 来创建的,只能叫该类的制定的静态方法才能创建实例。这种设计方法很有意思,那些静态方法还给你的不一定是 Inet4Address 还是 Inet6Address,很灵活的说。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表