局域网扫描获取主机的有关信息

怎样获取局域网中的主机的有关信息哪?网上搜了一下,基本上是通过 ping 命令完成,感觉这个办法有点不怎么好。

感觉用JPCAP是个不错的选择,它是基于数据链路层的编程,很方便实现很多东西。这个问题先放在一边,下次再说,

虽然使用 ping 不怎么好,还是记个标志。

   废话不说啦,贴上关键代码:

    class PingIp extends Thread {

  public String ip; // IP

  public PingIp(String ip) {
   this.ip = ip;
  }

  public void run() {
   try {
    Process p = Runtime.getRuntime().exec(
      "ping " + ip + " -w 300 -n 1");
    InputStreamReader isr = new InputStreamReader(p.getInputStream());
    LineNumberReader input = new LineNumberReader(isr);
    // 读取结果行
    for (int i = 1; i < 7; i++)
     input.readLine();
    String line = input.readLine();
    if (!line.equals("Request timed out.")) {
                   
     InetAddress host = InetAddress.getByName(ip);
     String hostName = host.getHostName();
     
     System.out.println("您所在网段中存在的主机:"+" "+ "IP:" + " " + ip + "  "
       + "HostName:" + " " + hostName + " ");
     
    }
    if (line.length() < 17
      || line.substring(8, 17).equals("timed out")) {
     ping.put(ip, "超时返回");
    } else {
     ping.put(ip, "null");//已被使用
    }
     
    // 线程结束
    threadCount -= 1;
    } catch (IOException e) {
   }
  } 

不知哪位还有更好的办法实现此类问题,希望探讨!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值