Java中获取当前地址的多种方式

在Java编程中,我们经常需要获取当前的地址信息,这可以用于日志记录、调试、网络通信等场景。本文将介绍几种在Java中获取当前地址的方法,并提供相应的代码示例。

获取本地IP地址

在Java中,可以使用InetAddress类来获取本地IP地址。以下是一个示例代码:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetLocalIP {
    public static void main(String[] args) {
        try {
            InetAddress localHost = InetAddress.getLocalHost();
            String localIP = localHost.getHostAddress();
            System.out.println("Local IP Address: " + localIP);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

这段代码首先获取本地主机的InetAddress对象,然后调用getHostAddress()方法获取IP地址。

获取本地MAC地址

除了IP地址,有时我们还需要获取本地的MAC地址。可以使用NetworkInterface类来实现:

import java.net.NetworkInterface;
import java.util.Collections;
import java.util.Enumeration;

public class GetLocalMAC {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                byte[] macBytes = networkInterface.getHardwareAddress();
                if (macBytes != null) {
                    StringBuilder macAddress = new StringBuilder();
                    for (byte b : macBytes) {
                        macAddress.append(String.format("%02X:", b));
                    }
                    macAddress.deleteCharAt(macAddress.length() - 1);
                    System.out.println("MAC Address: " + macAddress.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这段代码遍历所有网络接口,获取每个接口的硬件地址(即MAC地址)。

获取外网IP地址

获取外网IP地址通常需要通过网络服务,例如HTTP请求。以下是一个使用HttpURLConnection获取外网IP的示例:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class GetExternalIP {
    public static void main(String[] args) {
        try {
            URL whatismyip = new URL("
            HttpURLConnection connection = (HttpURLConnection) whatismyip.openConnection();
            connection.setRequestMethod("GET");
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println("External IP Address: " + inputLine);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这段代码向`

关系图

以下是InetAddressNetworkInterfaceHttpURLConnection之间的关系图:

erDiagram
    INetAddress ||--o{ NetworkInterface : "has"
    NetworkInterface ||--o{ MACAddress : "has"
    INetAddress ||--o{ IP : "has"
    IP ||--o{ ExternalIP : "is"
    ExternalIP }|--|| IP
    IP ||--o{ LocalIP : "is"

结语

本文介绍了Java中获取当前地址的几种方式,包括获取本地IP地址、本地MAC地址和外网IP地址。通过使用InetAddressNetworkInterfaceHttpURLConnection类,我们可以方便地获取这些信息。希望这些示例代码能够帮助你在实际开发中解决问题。