2012-10-05 195 views
3

我正在开发一个软件,我需要通过java代码的计算机的IP地址和MAC地址列表。有没有办法获得IP地址和MAC地址列表?如何通过java获取计算机的MAC地址和IP地址列表?

感谢

+3

您必须在互联网上搜索的在发布问题前回答。 http://www.mkyong.com/java/how-to-get-mac-address-in-java/ 希望有所帮助。 –

+0

它在本教程中很好地解释了...请参阅此链接http://www.mkyong.com/java/how-to-get-mac-address-in-java/ –

回答

7

由于JDK 1.6,Java开发人员能够通过NetworkInterface类访问网卡的细节。

  InetAddress ip; 
    ip = InetAddress.getLocalHost(); 
    System.out.println("Current IP address : " + ip.getHostAddress()); 

    NetworkInterface network = NetworkInterface.getByInetAddress(ip); 

    byte[] mac = network.getHardwareAddress(); 

    System.out.print("Current MAC address : "); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < mac.length; i++) { 
     sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));   
    } 
    System.out.println(sb.toString()); 

多个IP地址:

    java.util.Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); 
     en.hasMoreElements();) { 
     NetworkInterface iface = en.nextElement(); 
     List<InterfaceAddress> addrs = iface.getInterfaceAddresses(); 
     //For each network interfaces iterate through each ip address 
     for(InterfaceAddress addr : addrs) { 
         ip = addr.getAddress(); 
          //Process the IP ... 
+0

此代码适用于单个IP计算机,但如果一台计算机中有多个IP地址会怎么样。 – Deval

+1

@Deval请参阅最新的答案... – aleroot

+0

请问您可以用大括号正确地发布更新后的答案 – Deval

1

示例代码运行从java程序的命令,

Process p; 
    String cmd="ifconfig-a"; 
    p = Runtime.getRuntime().exec(cmd); 
    BufferedReader br = new BufferedReader(
    new InputStreamReader(p.getInputStream())); 
    while ((s = br.readLine()) != null) 
    System.out.println("line: " + s); 
    p.waitFor(); 
    System.out.println ("exit: " + p.exitValue()); 
    p.destroy(); 

输出:

line: eth0  Link encap:Ethernet HWaddr 00:13:D3:DE:5A:A4 --->MAC address in linux 
+1

它仅适用于Windows ... – aleroot

+0

您能否定义什么是p变量 – Deval