`

整理了sun网站java环境下获取网卡信息的资料

    博客分类:
  • java
阅读更多

引自:

http://www.nqqn.com/ym/68/2972.htm

 

因为最近有程序需要在java环境下获取网卡ID,研究了SUN网站的相关资料(感谢令公子的连接)。
    测试整理了一下,分享给大家。
    思路是通过调用windows环境下的ipconfig命令和Linux环境下的ifconfig命令来获取网卡信息:
    分为四个程序文件:
test.java;NetworkInfo.java;WindowsNetworkInfo.java;LinuxNetworkInfo.java
//--------------test.java--------
package netcardinfo;

public class test {
  public test() {
  }
  public NetworkInfo nti = new WindowsNetworkInfo();
  public static void main(String[] args) {
    test test1 = new test();
    try {
       System.out.println("Network infos");
       System.out.println("Operating System:" + System.getProperty("os.name"));
       System.out.println("IP/Localhost:" + test1.nti.getLocalHost());
       System.out.println("MAC Address:" + test1.nti.getMacAddress());
       System.out.println("Domain:" + test1.nti.getNetworkDomain());
     }
     catch(Throwable t) {
       t.printStackTrace();
     }
  }
}
//---------end file---------

//-----------NetworkInfo.java----------
package netcardinfo;

import java.net.*;
import java.io.*;
import java.text.*;
import java.util.*;
import java.util.regex.*;
public abstract class NetworkInfo{
      private static final String LOCALHOST = "localhost";
      public static final String NSLOOKUP_CMD = "nslookup";
      public abstract String parseMacAddress() throws ParseException;
/** Not too sure of the ramifications here, but it just doesn't seem right */
public String parseDomain() throws ParseException {  return parseDomain(LOCALHOST);    }
/** Universal entry for retrieving MAC Address */
public final static String getMacAddress() throws IOException {
     try {
        NetworkInfo info = getNetworkInfo();
        String mac = info.parseMacAddress();
        return mac;
         }
     catch(ParseException ex)
        { ex.printStackTrace();
        throw new IOException(ex.getMessage());
        }
   }
/** Universal entry for retrieving domain info */
public final static String getNetworkDomain() throws IOException{
    try {
       NetworkInfo info = getNetworkInfo();
       String domain = info.parseDomain();
       return domain;
       }
    catch(ParseException ex)
      {ex.printStackTrace();
       throw new IOException(ex.getMessage());
      }
    }
protected String parseDomain(String hostname) throws ParseException{
// get the address of the host we are looking for - verification
     java.net.InetAddress addy = null;
     try {
        addy = java.net.InetAddress.getByName(hostname);
      }
      catch ( UnknownHostException e ) {
        e.printStackTrace();
        throw new ParseException(e.getMessage(),0);
      }
// back out to the hostname - just validating
hostname = addy.getCanonicalHostName();
String nslookupCommand = NSLOOKUP_CMD + " " + hostname;
  // run the lookup command
String nslookupResponse = null;
     try {
        nslookupResponse = runConsoleCommand(nslookupCommand);
      }
      catch ( IOException e ){
      e.printStackTrace();
      throw new ParseException(e.getMessage(), 0);
      }
   StringTokenizer tokeit = new StringTokenizer(nslookupResponse,"\n",false);
      while( tokeit.hasMoreTokens() )
        { String line = tokeit.nextToken();
          if( line.startsWith("Name:")){line = line.substring(line.indexOf(":") + 1);
          line = line.trim();
          if( isDomain(line, hostname)){line = line.substring(hostname.length()+1);
          return line;
        }
    }
  }
  return "n.a.";
  }
  private static boolean    isDomain(String domainCandidate, String hostname)
    { Pattern domainPattern = Pattern.compile("[\\w-]+\\.[\\w-]+\\.[\\w-]+\\.[\\w-]+");
      Matcher m = domainPattern.matcher(domainCandidate);
      return m.matches() && domainCandidate.startsWith(hostname);
    }
  protected String runConsoleCommand(String command) throws IOException {
    Process p = Runtime.getRuntime().exec(command);
    InputStream stdoutStream = new BufferedInputStream(p.getInputStream());
    StringBuffer buffer= new StringBuffer();
    for (;;) {
       int c = stdoutStream.read();
       if (c == -1) break;
       buffer.append((char)c);
     }
   String outputText = buffer.toString();
   stdoutStream.close();
   return outputText;
}
/** Sort of like a factory... */
private static NetworkInfo getNetworkInfo() throws IOException {
   String os = System.getProperty("os.name");
   if(os.startsWith("Windows")) {
   return new WindowsNetworkInfo();
    }
   else if(os.startsWith("Linux")) {
   return new LinuxNetworkInfo();
   }
   else {
   throw new IOException("unknown operating system: " + os);
   }
}
protected String getLocalHost() throws ParseExce

分享到:
评论

相关推荐

    SUN求职宝典(PASSOFFER总结整理)

    【SUN求职宝典】是由PassOffer(通程网)精心整理的一份针对SUN公司求职的指南,旨在帮助求职者顺利通过面试和笔试环节,获取满意的工作机会。PassOffer是一个专注于提供求职指导的平台,它集合了一系列的求职课程、...

    Java拼图,基于J2ME源码整理

    Java拼图是一款基于J2ME(Java Micro Edition)平台开发的源码项目,它展示了如何在有限的资源和计算能力下实现一个互动游戏。J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑...

    16个经典面试问题回答思路(Java方面的)

    回答思路:JMM规定了线程如何访问和修改共享变量,确保多线程环境下的数据一致性。它包括堆内存、栈内存、方法区、本地方法栈以及程序计数器等组件。 4. **问题4:解释Java中的封装、继承和多态?** 回答思路:...

    SUN国际认证考试指定考试考场

    接下来,我们将对这些信息进行整理与分析,以便更好地理解SUN国际认证考试及其指定考场的情况。 ### SUN国际认证考试概述 SUN国际认证考试是由Sun Microsystems(简称SUN)公司推出的系列认证之一。Sun ...

    Java虚拟机

    这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...

    android 深圳培训资料

    **安装Java JDK**:确保计算机安装了Java JDK,可以从Sun官方网站下载。 2. **安装Eclipse**:直接下载Eclipse并解压缩即可使用。 3. **安装Android SDK**:通过Android官方网站或提供的链接进行下载安装。 4. *...

    nc 6.5安装指南 nc 6.5安装指南

    对于Linux操作系统下SUNJDK1.7.0_51存在的BUG,需要进行特定的修改,即在文件$JAVA_HOME/jre/lib/security/java.security中修改securerandom.source参数。 4. 中间件安装部署: 安装YONYOUNC6.5时,需要安装UAP平台...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。...

    JVM与Hadoop介绍

    它提供了一个独立于硬件平台的运行时环境,使得Java应用程序能够在任何支持JVM的操作系统上运行。 #### 二、JVM架构与运行时数据区域 ##### 1. JVM架构概念图 JVM的架构可以分为以下几个部分: - **程序计数器...

    JMF多媒体api汉化

    Java Media Framework (JMF) 是一个开源的API,由Sun Microsystems开发,用于在Java应用程序中处理多媒体内容,如音频、视频和同步数据流。JMF为开发者提供了在Java环境中播放、捕获、处理和控制多媒体数据的能力。...

    本地开发服务管理工具客户端

    Swing 是 Java 平台上的一种图形用户界面(GUI)工具包,由 Sun Microsystems 开发。它提供了丰富的组件库,使得开发者可以构建出美观且功能强大的桌面应用程序。在“本地开发服务管理工具客户端”中,Swing 被用来...

Global site tag (gtag.js) - Google Analytics