如何获得客户端机器的确切IP地址?

时间:2017-01-11 09:23:22

标签: asp.net

我知道REMOTE_ADDR返回路由器的IP地址,而不是客户端用户的机器。 HTTP_X_FORWARDED_FOR,因为当客户端用户位于代理服务器后面时,他的机器的IP地址将代理服务器的IP地址附加到客户端计算机的IP地址。如果客户端计算机位于许多代理服务器后面,则会附加所有服务器标识。但我只想要客户端机器地址。

如何获得?

 string ipaddress;
 ipaddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
 if (ipaddress == "" || ipaddress == null)
    ipaddress = Request.ServerVariables["REMOTE_ADDR"];

以下代码是否会返回客户端或本地计算机的ipaddress?

ipaddress = Dns.GetHostName(); // Retrieve the Name of HOST
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(ipaddress);

IPAddress[] addr = ipEntry.AddressList;

string ip = addr[2].ToString();

或者我应该选择

 private string GetUserIP()
 {
        string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipList))
        {
            return ipList.Split(',')[0];
        }

        return Request.ServerVariables["REMOTE_ADDR"];
}

获取第一个?

0 个答案:

没有答案