网站建设资讯

NEWS

网站建设资讯

怎么获取当前服务器或用户ip和端口

这篇文章主要介绍“怎么获取当前服务器或用户ip和端口”,在日常操作中,相信很多人在怎么获取当前服务器或用户ip和端口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么获取当前服务器或用户ip和端口”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

市北ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

 经过请求(request)获取当前服务器地址 相信基本都知道

request.getHeader("User-Agent");    //就是取得客户端的系统版本     
request.getRemoteAddr();    //取得客户端的IP     
request.getRemoteHost()     //取得客户端的主机名     
request.getRemotePort();    //取得客户端的端口     
request.getRemoteUser();    //取得客户端的用户     
request.getLocalAddr();    //取得服务器IP     
request.getLocalPort();    //取得服务器端口

   但是不经过请求获取服务器地址 经测试 以下两个方法都可以

//方法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);

    如果同一台服务器下 部署多个应用 (多端口)  一直没有找到 如何判断端口

    例如:如果多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;
    }

到此,关于“怎么获取当前服务器或用户ip和端口”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


文章名称:怎么获取当前服务器或用户ip和端口
当前地址:http://cdweb.net/article/jgcoip.html