當前位置:首頁 » 編程語言 » 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也有區別,有興趣可以試試

熱點內容
存儲過程的語法結構 發布:2024-11-23 07:49:17 瀏覽:344
黑客工具源碼 發布:2024-11-23 07:47:44 瀏覽:509
php長鏈接 發布:2024-11-23 07:41:40 瀏覽:753
linuxdump 發布:2024-11-23 07:06:05 瀏覽:393
差距的演算法 發布:2024-11-23 06:48:09 瀏覽:884
hmcl離線伺服器怎麼裝皮膚 發布:2024-11-23 06:42:49 瀏覽:230
各型緩存器年額最高多少 發布:2024-11-23 06:42:43 瀏覽:62
光譜特徵編譯 發布:2024-11-23 06:19:46 瀏覽:893
怎樣拍視頻上傳 發布:2024-11-23 06:15:39 瀏覽:904
創建個存儲過程 發布:2024-11-23 06:15:35 瀏覽:378