我是Allen一枚JAVA程序員
這個算是比較基礎的問題。
JAVAWEB,我們以servlet為例,回答如何獲取客戶端IP,大部分的Javaweb程序均是基于此,例如springmvc,springboot。
首先我們知道javaweb客戶端與服務端的交互一般是使用HTTP/HTTPS協議,而HTTP/HTTPS是基于TCP/IP協議的,既然是基于此協議,服務端是一定有辦法獲取客戶端請求的IP和PORT的。而一般來說,servlet請求一般格式是這樣的(未封裝),使用簡單的Springboot程序演示。
包含一個servlet請求,接下來我們看下這個請求,是否為我們封裝了需要的客戶端信息,一般來說我們客戶端用remote表示。查看HttpServletRequest源碼,查看其方法,有如下方法:
從名字上來看,分別是獲取客戶端地址,獲取客戶端主機(名稱),獲取客戶端端口,以及獲取客戶端用戶,廢話不多說,直接上測試代碼:
一般本機測試會出現因為ip回環問題,導致ip都是0.0.0.0,測試不出效果,我們打包放在XX云服務器上,或者在自己的虛擬機上都可以運行測試。
訪問默認端口8080,可以看到如下信息,ip,port均是如此:
這樣,應該知道如何獲取客戶端IP了吧?有問題請留言,本,以及相關微信號zhd5986。