當前位置:首頁 » 編程語言 » java訪問ip

java訪問ip

發布時間: 2024-11-04 09:02:34

『壹』 javaWeb如何獲取當前訪問IP

背景

在進行JavaWeb開發時,通過會記錄日誌,在記錄日誌的時候,就會存在客戶端的ip存儲,那麼如何獲取客戶端對應的ip呢?

知識點

客戶端的訪問ip,是可以通過Request對象來獲取,代碼如下,也是我在項目中經常使用到的工具類。

publicclassIPUtils{/***獲取IP地址*@paramrequest*@return*/(HttpServletRequestrequest){Stringip=request.getHeader("x-forwarded-for");System.out.println("x-forwarded-forip:"+ip);if(ip!=null&&ip.length()!=0&&!"unknown".equalsIgnoreCase(ip)){//多次反向代理後會有多個ip值,第一個ip才是真實ipif(ip.indexOf(",")!=-1){ip=ip.split(",")[0];}}if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.getHeader("Proxy-Client-IP");System.out.println("Proxy-Client-IPip:"+ip);}if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.getHeader("WL-Proxy-Client-IP");System.out.println("WL-Proxy-Client-IPip:"+ip);}if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.getHeader("HTTP_CLIENT_IP");System.out.println("HTTP_CLIENT_IPip:"+ip);}if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.getHeader("HTTP_X_FORWARDED_FOR");System.out.println("HTTP_X_FORWARDED_FORip:"+ip);}if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.getHeader("X-Real-IP");System.out.println("X-Real-IPip:"+ip);}if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.getRemoteAddr();System.out.println("getRemoteAddrip:"+ip);}System.out.println("獲取客戶端ip:"+ip);returnip;}}

可以通過調用此工具類來獲取到當前客戶端訪問的IP地址了。

特殊情況

其實這裡面也存在一些特殊的情況,客戶端可能通過代理的方式進行調用後端代碼,所以這里的ip其實可能並不是真實的地址。

還有就是如果通過轉發的話,ip的獲取也可能會有所差異。

所以大家在使用獲取ip的情況下,還是不要太過依賴於他。

『貳』 如何在java中獲取本地ip

很多朋友都想知道java如何獲取本地ip?下面就一起來了解一下吧~

獲取java本地ip一共有兩種方法:1、inetAddress類;2、封裝方法。

1、 inetAddress類

通過InetAddress的實例對象包含以數字形式保存的IP地址,同時還可能包含主機名(如果使用主機名來獲取InetAddress的實例,或者使用數字來構造,並且啟用了反向主機名解析的功能)。InetAddress類提供了將主機名解析為IP地址(或反之)的方法。其生成InetAddress對象的方法。

import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostException; public class Main {     public static void main(String[] args) throws UnknownHostException {         //Inet4Address address= (Inet4Address) Inet4Address.getLocalHost();         InetAddress address = InetAddress.getLocalHost();         System.out.println(address);//獲取計算機名稱和ip地址         String hostAddress = address.getHostAddress();         System.out.println(hostAddress);//獲取ip地址         String hostName = address.getHostName();         System.out.println(hostName);//獲取計算機名稱     } }

2、封裝方法。

    public static String getLocalIp() {         Enumeration  netInterfaces = null;         try {             netInterfaces = NetworkInterface.getNetworkInterfaces();             while (netInterfaces.hasMoreElements()) {                 NetworkInterface nif = netInterfaces.nextElement();                 Enumeration  InetAddress = nif.getInetAddresses();                 while (InetAddress.hasMoreElements()) {                     String ip = InetAddress.nextElement().getHostAddress();                     if (ip.startsWith("192.168")) {                         return ip;                     }                 }             }         } catch (SocketException e) {         }         return "127.0.0.1";     }

『叄』 java如何查詢本機ip地址和mac地址

Java中可以使用程序來獲取本地ip地址和mac地址,使用InetAddress這個工具類,示例如下:

importjava.net.*;
publicclassNetInfo{
publicstaticvoidmain(String[]args){
newNetInfo().say();
}
publicvoidsay(){
try{
InetAddressi=InetAddress.getLocalHost();
System.out.println(i);//計算機名稱和IP
System.out.println(i.getHostName());//名稱
System.out.println(i.getHostAddress());//只獲得IP
}
catch(Exceptione){e.printStackTrace();}
}
}

也可以通過命令行窗口來查看本地ip和mac地址,輸入命令:ipconfig。

『肆』 java獲得訪問者ip,為什麼獲得的值是ip "0:0:0:0:0:0:0:1" (id=114)

這代碼的問題只會出現在本機訪問服務,獲取ip時才會出現。
而且如果你本機通過localhost、127.0.0.1和本機真實地址訪問時獲取到的ip也有區別,有興趣可以試試

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:589
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:885
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:577
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:763
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:680
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1010
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:253
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:111
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:802
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:709