您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么獲取當(dāng)前服務(wù)器或用戶ip和端口”,在日常操作中,相信很多人在怎么獲取當(dāng)前服務(wù)器或用戶ip和端口問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么獲取當(dāng)前服務(wù)器或用戶ip和端口”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
經(jīng)過請求(request)獲取當(dāng)前服務(wù)器地址 相信基本都知道
request.getHeader("User-Agent"); //就是取得客戶端的系統(tǒng)版本 request.getRemoteAddr(); //取得客戶端的IP request.getRemoteHost() //取得客戶端的主機名 request.getRemotePort(); //取得客戶端的端口 request.getRemoteUser(); //取得客戶端的用戶 request.getLocalAddr(); //取得服務(wù)器IP request.getLocalPort(); //取得服務(wù)器端口
但是不經(jīng)過請求獲取服務(wù)器地址 經(jīng)測試 以下兩個方法都可以
//方法1 String SERVER_IP =""; try { Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; while (netInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) netInterfaces .nextElement(); ni.getInterfaceAddresses(); 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 (Exception e) { e.printStackTrace(); }
//方法2 InetAddress addr = null; try { addr = InetAddress.getLocalHost(); }catch (Exception e) { e.printStackTrace(); } byte[] ipAddr = addr.getAddress(); String ipAddrStr = ""; for (int i = 0; i < ipAddr.length; i++) { if (i > 0) { ipAddrStr += "."; } ipAddrStr += ipAddr[i] & 0xFF; } System.out.println(ipAddrStr);
如果同一臺服務(wù)器下 部署多個應(yīng)用 (多端口) 一直沒有找到 如何判斷端口
例如:如果多service
個人使用方法 獲取項目根目錄地址判斷 service 部署地址
//取得根目錄路徑 String rootPath=getClass().getResource("/").getFile().toString();
如果使用反向代理 獲取用戶ip
public static String getRemoteIpAddress(){ HttpServletRequest request = getHttpServletRequest(); String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("http_client_ip"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip != null && ip.indexOf(",") != -1) { ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim(); } if("0:0:0:0:0:0:0:1".equals(ip)) { ip="127.0.0.1"; } return ip; }
到此,關(guān)于“怎么獲取當(dāng)前服務(wù)器或用戶ip和端口”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。