如何通过Java获取计算机的MAC地址和IP地址列表?

3

我正在开发一款软件,在Java代码中需要获取计算机的IP地址列表和MAC地址。是否有获取IP地址和MAC地址列表的方法?

谢谢。


3
在发布问题之前,您必须先在互联网上搜索答案。 http://www.mkyong.com/java/how-to-get-mac-address-in-java/希望这能有所帮助。 - Andrew Anderson
这个教程讲解得非常清楚...请查看此链接http://www.mkyong.com/java/how-to-get-mac-address-in-java/。 - Kumar Vivek Mitra
2个回答

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 ...

这段代码对于单个计算机中的单个IP地址是可以的,但如果在同一台计算机上有多个IP地址呢? - 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

请问这里的p变量是什么意思? - Deval

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接