`

Get LocalHost MAC Address

    博客分类:
  • J2EE
阅读更多

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.NetworkInterface;
import java.util.Enumeration;

public class MACUtil {

    // 返回一个字节的十六进制字符串
    public static String hexByte(byte b) {
        String s = "000000" + Integer.toHexString(b);
        return s.substring(s.length() - 2);
    }

    /**
     * JDK1.6新特性获取网卡MAC地址
     */
    public static void getMac() {
        try {
            Enumeration<NetworkInterface> el = NetworkInterface
                    .getNetworkInterfaces();
            while (el.hasMoreElements()) {
                byte[] mac = el.nextElement().getHardwareAddress();
                if (mac == null) {
                    continue;
                }
                StringBuilder builder = new StringBuilder();
                for (byte b : mac) {
                    builder.append(hexByte(b));
                    builder.append("-");
                }
                builder.deleteCharAt(builder.length() - 1);
                System.out.println(builder);
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    /**
     * 原始的获取网卡MAC地址
     */
    public static void getMacOnWindow() {
        try {
            String mac = null;
            Process process = Runtime.getRuntime().exec("ipconfig /all");
            BufferedReader buffer = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            for (String line = buffer.readLine(); line != null; line = buffer
                    .readLine()) {
                System.out.println(line);
                int index = line.indexOf("Physical Address");
                if (index <= 0) {
                    continue;
                }
                mac = line.substring(index + 36);
                break;
            }
            buffer.close();
            process.waitFor();
            System.out.println(mac);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    public static void main(String[] args) throws Exception {
        System.out.println("通过调用DOS命令获得本机器的所有的网卡MAC如下:");
        getMacOnWindow();
        System.out.println("通过JDK获得本机器的所有的网卡MAC如下:");
        getMac();
    }
}

 

 

//------------------------------------------------------------------------------------------------------------------------------

package com.jtosa.util;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.text.ParseException;
import java.util.StringTokenizer;
import java.io.BufferedInputStream;

public class MACUtil {
    private final static int MACADDR_LENGTH = 17;
    private final static String WIN_OSNAME = "Windows";
    private final static String WIN_MACADDR_REG_EXP = "^[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}$";
    private final static String WIN_MACADDR_EXEC = "ipconfig /all";

    public final static String getMacAddress() throws IOException {
        String os = System.getProperty("os.name");
        try {
            if (os.startsWith(WIN_OSNAME)) {
                return winMacAddress(winIpConfigCommand());
            }
            // 下面是其它的操作系统的代码,省略了!
            // LINUX --> else if (os.startsWith("Linux")) {
            //               
            // Process p = Runtime.getRuntime().exec("ifconfig");
            // MAC OSX --> else if(os.startsWith("Mac OS X")) {
            //               
            // Process p = Runtime.getRuntime().exec("ifconfig");
            else {
                throw new IOException("OS not supported : " + os);
            }
        } catch (ParseException e) {
            e.printStackTrace();
            throw new IOException(e.getMessage());
        }
    }

    private final static String winMacAddress(String ipConfigOutput)
            throws ParseException {
        String localHost = null;
        try {
            localHost = InetAddress.getLocalHost().getHostAddress();
        } catch (java.net.UnknownHostException ex) {
            ex.printStackTrace();
            throw new ParseException(ex.getMessage(), 0);
        }

        StringTokenizer tokenizer = new StringTokenizer(ipConfigOutput, "\n");
        String lastMacAddress = null;

        while (tokenizer.hasMoreTokens()) {
            String line = tokenizer.nextToken().trim();

            // see if line contains IP address
            if (line.endsWith(localHost) && lastMacAddress != null) {
                return lastMacAddress;
            }

            // see if line contains MAC address
            int macAddressPosition = line.indexOf(":");
            if (macAddressPosition <= 0)
                continue;

            String macAddressCandidate = line.substring(macAddressPosition + 1)
                    .trim();
            if (winIsMacAddress(macAddressCandidate)) {
                lastMacAddress = macAddressCandidate;
                continue;
            }
        }

        ParseException ex = new ParseException("cannot read MAC address from ["
                + ipConfigOutput + "]", 0);
        ex.printStackTrace();
        throw ex;
    }

    private final static boolean winIsMacAddress(String macAddressCandidate) {
        if (macAddressCandidate.length() != MACADDR_LENGTH)
            return false;
        if (!macAddressCandidate.matches(WIN_MACADDR_REG_EXP))
            return false;
        return true;
    }

    private final static String winIpConfigCommand() throws IOException {
        Process p = Runtime.getRuntime().exec(WIN_MACADDR_EXEC);
        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;
    }

    public final static void main(String[] args) {
        try {
            System.out.println("MAC ADDRESS");
            System.out.println("  OS          : "
                    + System.getProperty("os.name"));
            System.out.println("  IP/Localhost: "
                    + InetAddress.getLocalHost().getHostAddress());
            System.out.println("  MAC Address : " + getMacAddress());
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

}

分享到:
评论

相关推荐

    iOS获取用户设备当前的IP地址

    func getLocalIPAddress() -&gt; String? { var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_zero: [0; 8]) zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress)) ...

    delphi 整合获取IP和MAC.zip

    function GetLocalIPAddress: string; var HostEntry: THostEntry; begin Result := ''; if GetHostByName('localhost') = nil then Exit; HostEntry := Gethostbyname('localhost'); if HostEntry &lt;&gt; nil ...

    c#获取本地IP、本地MAC

    例如,`System.Net.Dns.GetHostEntry("localhost")`或`IPAddress[] addresses = Dns.GetHostAddresses(Dns.GetHostName())`方法可以获取到本地主机的所有IP地址。这些方法会返回一个IP地址数组,你可以遍历这个数组...

    Get_PC_Info.rar_获取IP地址

    MAC地址(Media Access Control Address)则是物理网络接口的硬件地址,用于局域网内的设备识别,通常为6个字节的12位十六进制数。 在JAVA中,我们可以使用java.net包中的InetAddress类来获取本地IP地址。这个类...

    asp.ne C# t编写的获取客户端MAC IP的源代码

    string macAddress = Request.Headers["X-Mac-Address"]; // 验证MAC地址并处理逻辑 return Content(macAddress); } ``` 在实际应用中,考虑到隐私保护和安全问题,直接获取客户端的MAC地址可能不符合最佳实践。...

    C# 通过IP或计算机名获取信息 源码

    PhysicalAddress macAddress = NetworkInterface.GetAllNetworkInterfaces() .Where(nic =&gt; nic.OperationalStatus == OperationalStatus.Up) .Select(nic =&gt; nic.GetPhysicalAddress()) .FirstOrDefault(); ``` ...

    VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧

    if (getaddrinfo("localhost", NULL, &hints, &result) != 0) { std::cerr &lt;&lt; "getaddrinfo failed: " () ; WSACleanup(); return 1; } for (addrinfo* r = result; r; r = r-&gt;ai_next) { char ipstr[INET6_...

    Java中获取IP地址,主机名称,网卡地址

    System.out.println("Your Mac Address is: " + mytool.getMACAddress()); } // 取得 LOCALHOST 的 IP 地址 public InetAddress getMyIP() { try { myIPaddress = InetAddress.getLocalHost(); } catch ...

    获取网卡mac

    对于其他编程语言,如JavaScript、Go、Ruby等,也有各种第三方库可以帮助获取MAC地址,如Node.js中的`macaddress`模块,Go语言的`golang.org/x/sys/unix`包等。 5. **网络驱动程序**: MAC地址通常由网络驱动程序...

    获取计算机CUP、IP、MAC等信息

    如果需要获取本地机器的IP地址,可以调用`gethostbyname("localhost")`或`getaddrinfo("127.0.0.1", "0", ...)`。对于IPv4和IPv6的支持,可以使用`gethostbyaddr`函数,传入网络接口的IP地址。 至于MAC地址,它在...

    基于BCB下获取本机IP地址

    void GetLocalIPAddress() { PIP_ADAPTER_INFO pAdapterInfo = NULL; DWORD dwBufLen = 0; // 获取所需缓冲区大小 GetAdaptersInfo(NULL, &dwBufLen); pAdapterInfo = (IP_ADAPTER_INFO*)malloc(dwBufLen); ...

    MFC获取主机名,IP地址,MAC地址

    在MFC中,你可以使用`WSAStartup`初始化Winsock,然后使用`gethostbyname`或`getaddrinfo`函数来获取IP地址。以下是一个简单的例子: ```cpp #include #include void GetIPAddress() { WSADATA wsaData; if ...

    获取本地IP地址的小程序

    IP地址(Internet Protocol Address)是互联网上的每个设备独一无二的标识,它由32位二进制数组成,通常以点分十进制形式表示,如192.168.1.1。在Java中,我们可以使用内置的`java.net`包来处理与网络相关的操作,...

    VC++枚举局域网内计算机IP和NAME

    如果需要枚举MAC地址,可以查询`Win32_NetworkAdapter`类,其`MACAddress`属性包含了物理地址信息。 总结,通过以上步骤,我们可以使用VC++和WMI来枚举局域网内的计算机IP和名称。实际应用中,还需要根据具体需求...

    SSH客户端操作Linux

    You can get a public key‘s fingerprint by running % ssh-keygen -F publickey.pub on the keyfile. Are you sure you want to continue connecting (yes/no)? Yes Host key saved to /home/jsmith/.ssh2/host...

    C#读取硬件信息

    循环遍历查询结果,获取`MACAddress`属性,即网卡的物理地址,通常用于网络通信中的硬件识别。同样,在找到第一个非空MAC地址后停止循环。 4. **获取可用串口**: `getport`函数用于查找尚未被IIS使用的端口号。这...

    获取主机拨号IP地址

    String ipAddress = localHost.getHostAddress(); ``` 当用户通过ADSL或其他宽带拨号方式连接互联网时,获取的IP地址通常为动态分配,每次拨号连接可能会改变。这时,我们可以通过以下方式获取: 1. 拨号软件...

    powershell-startup

    Invoke-WmiMethod -Class Win32_NetworkAdapterConfiguration -ComputerName $ipAddress -Name SendARP -ArgumentList ($macAddress, $ipAddress) ``` 一旦设备被唤醒,你可以使用Powershell的PSRemoting功能来...

    glassfish_demo

    在命令行中导航到Glassfish的bin目录,然后运行相应的启动脚本(对于Windows系统通常是`asadmin start-domain`,对于Linux或Mac系统则是`./asadmin start-domain`)。 步骤二:创建或导入域 在首次部署应用之前,...

Global site tag (gtag.js) - Google Analytics