日期:2014-05-18  浏览次数:20408 次

如何获取客户端IP?
在程序中,想获取客户端的IP。
因为客户端在一个局域网中,再通过防火墙和路由器出去的。
试了网上的一些方法,都不行,都不是客户端配置的IP,而是网络中某个网关的地址。

下面的方法不行:
  //得到客户端IP
  private string GetClientIP()
  {
  string result = this.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  if (result == null || result == String.Empty)
  {
  result = this.Request.ServerVariables["REMOTE_ADDR"];
  }
  if (result == null || result == String.Empty)
  {
  result = this.Request.UserHostAddress;
  }
  if (result == null || result == String.Empty)
  {
  result = "";
  }
  return result;
  }


------解决方案--------------------
内网IP是得不到滴,死心吧
------解决方案--------------------
探讨
内网IP是得不到滴,死心吧

------解决方案--------------------
C# code

#region 获得客户端IP
    private string GetClientIP()
    {
        string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if (null == result || result == String.Empty)
        {
            result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        }

        if (null == result || result == String.Empty)
        {
            result = HttpContext.Current.Request.UserHostAddress;
        }
        return result;
    }
    #endregion

------解决方案--------------------
你要获取客户端的内网IP?
------解决方案--------------------
C# code

                string ip; //获取登录者的IP
                if (Context.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    ip = Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                }
                else
                {
                    ip = Context.Request.ServerVariables["REMOTE_ADDR"].ToString();
                }

------解决方案--------------------
Context.Request.ServerVariables["REMOTE_ADDR"].ToString();

------解决方案--------------------
看看这个