溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么獲取當(dāng)前服務(wù)器或用戶ip和端口

發(fā)布時間:2021-07-07 16:29:05 來源:億速云 閱讀:881 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“怎么獲取當(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>

向AI問一下細(xì)節(jié)

免責(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)容。

AI