Java中如何獲取當(dāng)前服務(wù)器的IP地址
獲取ip的第一反應(yīng)就是:使用InetAddress這個類:方法如下
InetAddress.getLocalHost().getHostAddress();
public static void main(String[] args) { try { //用 getLocalHost() 方法創(chuàng)建的InetAddress的對象 InetAddress address = InetAddress.getLocalHost(); System.out.println(address.getHostName());//主機(jī)名 System.out.println(address.getCanonicalHostName());//主機(jī)別名 System.out.println(address.getHostAddress());//獲取IP地址 System.out.println("==============="); //用域名創(chuàng)建 InetAddress對象 InetAddress address1 = InetAddress.getByName("www.wodexiangce.cn"); //獲取的是該網(wǎng)站的ip地址,如果我們所有的請求都通過nginx的,所以這里獲取到的其實是nginx服務(wù)器的IP地址 System.out.println(address1.getHostName());//www.wodexiangce.cn System.out.println(address1.getCanonicalHostName());//124.237.121.122 System.out.println(address1.getHostAddress());//124.237.121.122 System.out.println("==============="); //用IP地址創(chuàng)建InetAddress對象 InetAddress address2 = InetAddress.getByName("220.181.111.188"); System.out.println(address2.getHostName());//220.181.111.188 System.out.println(address2.getCanonicalHostName());//220.181.111.188 System.out.println(address2.getHostAddress());//220.181.111.188 System.out.println("==============="); //根據(jù)主機(jī)名返回其可能的所有InetAddress對象 InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com"); for (InetAddress addr : addresses) { System.out.println(addr); //www.baidu.com/220.181.111.188 //www.baidu.com/220.181.112.244 } } catch (UnknownHostException e) { e.printStackTrace(); } }
可以知道此時獲取到的服務(wù)器如果加了代理方式就是獲取到代理的地址,一般會使用netty代理轉(zhuǎn)發(fā)。
/** * 獲取服務(wù)器IP地址 * @return */ @SuppressWarnings("unchecked") public static String getServerIp(){ String SERVER_IP = null; try { Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; while (netInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement(); ip = (InetAddress) ni.getInetAddresses().nextElement(); SERVER_IP = ip.getHostAddress(); if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) { SERVER_IP = ip.getHostAddress(); break; } else { ip = null; } } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } return SERVER_IP; }
我的解決死方法(方法是死的,但是能解決問題^_^)
在nacos的配置里面新建一個
constant.ipHost=服務(wù)器的ip
//獲取服務(wù)器的ip @Value("${constant.ipHost}") private String ipHost;
總結(jié)
到此這篇關(guān)于Java中如何獲取當(dāng)前服務(wù)器的IP地址的文章就介紹到這了,更多相關(guān)Java獲取服務(wù)器IP地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決springboot 無法配置多個靜態(tài)路徑的問題
這篇文章主要介紹了解決springboot 無法配置多個靜態(tài)路徑的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Spring?Boot項目中遇到`if-else`語句七種具體使用方法解析
當(dāng)在Spring?Boot項目中遇到大量if-else語句時,優(yōu)化這些代碼變得尤為重要,因為它們不僅增加了維護(hù)難度,還可能影響應(yīng)用程序的可讀性和性能,以下是七種具體的方法,用于在Spring?Boot項目中優(yōu)化和重構(gòu)if-else語句,感興趣的朋友一起看看吧2024-07-07