A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张晋瑜 中级黑马   /  2013-3-13 10:56  /  1734 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张晋瑜 于 2013-3-16 21:12 编辑

先看下代码
  1. public class NetworkInterface {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 try {
  8. //                        java.net.NetworkInterface ni=java.net.NetworkInterface.getByName("eth0");
  9.                         // 192.168.1.1 是我自己的路由器设置的默认网关,为什么运行结果却老是说:网络接口不存在呢?
  10.                         java.net.NetworkInterface ni=java.net.NetworkInterface.getByInetAddress(InetAddress.getByName("192.168.1.1"));
  11.                         System.out.println((ni==null) ? "网络接口不存在" : ni.toString());
  12.                 } catch (SocketException e) {
  13.                         // TODO Auto-generated catch block
  14.                         e.printStackTrace();
  15.                 } catch (UnknownHostException e){
  16.                         e.printStackTrace();
  17.                 }
  18.         }

  19. }
复制代码
正如注释中所说,为什么运行结果会是“网络接口不存在呢”?
还有,当我java.net.NetworkInterface.getByName("eth0");却不会说“网络接口不存在”,但是,没有返回和这个网络接口上绑字的所有 IP 地址,这是为什么?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-16 13:49

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
getByName("");这个函数就是在给定主机名的情况下确定主机的 IP 地址。使用你的主机名能打印出路由给你的电脑所分配的IP,interfaceaddress 这个类方法不多,但只能够获取IP 地址、子网掩码和广播地址,体现不了你需要的默认路由。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马