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();
}
}
}
这段代码向`
关系图
以下是InetAddress
、NetworkInterface
和HttpURLConnection
之间的关系图:
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地址。通过使用InetAddress
、NetworkInterface
和HttpURLConnection
类,我们可以方便地获取这些信息。希望这些示例代码能够帮助你在实际开发中解决问题。