獲取當前IP地址是Java開發中常見需求之一,本文將從以下多個方面對獲取當前IP地址的Java代碼實現做詳細的闡述。
一、使用Inet4Address獲取當前IP地址
Inet4Address是Java中一個用於表示IPv4地址的類,可以通過該類獲取當前主機的IP地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressUtil {
public static void main(String[] args) throws UnknownHostException {
InetAddress inetAddress = InetAddress.getLocalHost();
System.out.println("當前IP地址為:" + inetAddress.getHostAddress());
}
}
通過調用getHostAddress()方法即可獲取當前主機的IP地址。
二、使用NetworkInterface獲取當前IP地址
除了Inet4Address,還可以使用Java提供的NetworkInterface類獲取當前主機的IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class NetworkInterfaceUtil {
public static void main(String[] args) throws SocketException {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
System.out.println("當前IP地址為:" + inetAddress.getHostAddress());
}
}
}
}
通過NetworkInterface獲取所有的網絡接口,再通過網絡接口獲取所有的IP地址。
三、使用HttpClient發送GET請求獲取當前IP地址
除了使用Java自帶的類獲取IP地址,還可以通過HttpClient發送GET請求獲取當前主機的IP地址。
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class HttpClientUtil {
public static void main(String[] args) throws IOException {
HttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://myip.ipip.net/");
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
String result = EntityUtils.toString(httpEntity);
String ip = result.substring(result.indexOf("[") + 1, result.indexOf("]"));
System.out.println("當前IP地址為:" + ip);
}
}
通過發送GET請求至http://myip.ipip.net/,並從返回結果中解析出當前主機的IP地址。
四、使用Java獲取其它網絡信息
除了獲取當前IP地址,還可以使用Java獲取其它網絡信息,例如:本機的MAC地址、域名、端口等。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class NetworkInfoUtil {
public static void main(String[] args) throws UnknownHostException {
InetAddress inetAddress = InetAddress.getLocalHost();
System.out.println("當前主機名為:" + inetAddress.getHostName());
System.out.println("當前主機的IP地址為:" + inetAddress.getHostAddress());
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
byte[] macBytes = networkInterface.getHardwareAddress();
if (macBytes != null) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < macBytes.length; i++) {
sb.append(String.format("%02X%s", macBytes[i], (i < macBytes.length - 1) ? "-" : ""));
}
System.out.println("當前主機的MAC地址為:" + sb.toString());
}
Enumeration inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress address = (InetAddress) inetAddresses.nextElement();
System.out.println("當前主機的域名為:" + address.getHostName());
System.out.println("當前主機的端口號為:" + networkInterface.getMTU());
}
}
}
}
通過調用相應的方法即可獲取相應的網絡信息。
總結
本文從使用Inet4Address獲取IP地址、使用NetworkInterface獲取IP地址、使用HttpClient發送GET請求獲取IP地址、使用Java獲取其它網絡信息等多個方面對獲取當前IP地址的Java代碼實現進行了詳細的闡述。在實際開發中,可以根據需求選擇相應的方式來獲取IP地址。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/188571.html
微信掃一掃
支付寶掃一掃