Java獲取本機(jī)IP的幾種常見方法
在Java中獲取本地IP地址有多種方式,以下是幾種常見的方法:
1. 使用 InetAddress 類
InetAddress 類是Java標(biāo)準(zhǔn)庫中用于表示IP地址的類,可以通過它獲取本地主機(jī)的IP地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Main {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("Local IP Address: " + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
2. 使用 NetworkInterface 類
NetworkInterface 類提供了更細(xì)粒度的網(wǎng)絡(luò)接口信息,可以獲取所有網(wǎng)絡(luò)接口的IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class Main {
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress.isSiteLocalAddress()) {
System.out.println("Local IP Address: " + inetAddress.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
3. 使用第三方庫(如 Apache Commons Net)
如果你需要更復(fù)雜的功能,可以使用第三方庫,如 Apache Commons Net。
import org.apache.commons.net.util.SubnetUtils;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Main {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("Local IP Address: " + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
使用時(shí)如何選擇?
InetAddress類:簡單易用,適合大多數(shù)場景,尤其是只需要獲取本地主機(jī)的IP地址時(shí)。NetworkInterface類:適合需要獲取所有網(wǎng)絡(luò)接口的IP地址,或者需要過濾特定類型的IP地址(如非回環(huán)地址、本地地址等)的場景。- 第三方庫:適合需要更復(fù)雜網(wǎng)絡(luò)操作的場景,如子網(wǎng)計(jì)算、IP地址范圍處理等。
總結(jié)
對于大多數(shù)簡單場景,使用 InetAddress.getLocalHost() 是最簡單和直接的方式。如果你需要更細(xì)粒度的控制或處理多個(gè)網(wǎng)絡(luò)接口,可以使用 NetworkInterface 類。
到此這篇關(guān)于Java獲取本機(jī)IP的幾種常見方法的文章就介紹到這了,更多相關(guān)Java獲取本機(jī)IP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
啟動SpringBoot報(bào)JavaMail加載錯(cuò)誤的原因分析和解決
這篇文章給大家介紹了啟動SpringBoot報(bào)JavaMail加載錯(cuò)誤的原因分析和解決,文中通過代碼示例給出了詳細(xì)的原因分析和解決方法,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
Java的Hibernate框架中的繼承映射學(xué)習(xí)教程
Hibernate中的映射可以將類與表對應(yīng),并利用類的繼承特性,這里我們就來看一下Java的Hibernate框架中的繼承映射學(xué)習(xí)教程2016-07-07
Caused?by:?java.lang.NumberFormatException:?For?input?s
這篇文章主要介紹了Caused?by:?java.lang.NumberFormatException:?For?input?string:?“port“,本文給大家分享完美解決方法,需要的朋友可以參考下2023-01-01
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之共享租車信息管理系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+Jsp+Servlet+Jdbc+Mysql開發(fā)的共享租車信息管理系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有租車管理該有的所有功能,感興趣的朋友快來看看吧2022-02-02
Java實(shí)現(xiàn)自定義Excel數(shù)據(jù)排序的方法詳解
通常,我們可以在Excel中對指定列數(shù)據(jù)執(zhí)行升序或者降序排序,在需要自定義排序情況下,我們也可以自行根據(jù)排序需要編輯數(shù)據(jù)排列順序。本文將通過Java應(yīng)用程序來實(shí)現(xiàn)如何自定義排序,需要的可以參考一下2022-09-09
Java報(bào)錯(cuò):UnsupportedOperationException in Collection
在Java編程中,UnsupportedOperationException是一種常見的運(yùn)行時(shí)異常,通常在試圖對不支持的操作執(zhí)行修改時(shí)發(fā)生,它表示當(dāng)前操作不被支持,本文將深入探討UnsupportedOperationException的產(chǎn)生原因,并提供具體的解決方案和最佳實(shí)踐,需要的朋友可以參考下2024-06-06
關(guān)于Java實(shí)現(xiàn)HttpServer模擬前端接口調(diào)用
這篇文章主要介紹了關(guān)于Java實(shí)現(xiàn)Http?Server模擬前端接口調(diào)用,Http?協(xié)議是建立在?TCP?協(xié)議之上的協(xié)議,所以能用?TCP?來自己模擬一個(gè)簡單的?Http?Server?當(dāng)然是可以的,需要的朋友可以參考下2023-04-04

