我正在尝试使用C#获取客户端机器的IP地址。 我正在使用以下代码获取IP地址:
string IPAddress = HttpContext.Current.Request.UserHostAddress;
但是它以编码格式返回响应,即fe80 :: ed13:dee2:127e:1264%13
我该如何获取实际的IP地址?有人遇到过这个问题,请分享一些想法。
我正在尝试使用C#获取客户端机器的IP地址。 我正在使用以下代码获取IP地址:
string IPAddress = HttpContext.Current.Request.UserHostAddress;
但是它以编码格式返回响应,即fe80 :: ed13:dee2:127e:1264%13
我该如何获取实际的IP地址?有人遇到过这个问题,请分享一些想法。
C#
string IPAddress = GetIPAddress();
public string GetIPAddress()
{
IPHostEntry Host = default(IPHostEntry);
string Hostname = null;
Hostname = System.Environment.MachineName;
Host = Dns.GetHostEntry(Hostname);
foreach (IPAddress IP in Host.AddressList) {
if (IP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) {
IPAddress = Convert.ToString(IP);
}
}
return IPAddress;
}
VB.net
Dim Host As IPHostEntry
Dim Hostname As String
Hostname = My.Computer.Name
Host = Dns.GetHostEntry(Hostname)
For Each IP As IPAddress In Host.AddressList
If IP.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Then
IPAddress = Convert.ToString(IP)
End If
Next
Return IPAddress
private string GetUserIP()
{
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"];
}
您可能会获得多个IP地址,因此可以将它们拆分为-
private string GetUserIP()
{
string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipList))
{
return ipList.Split(',')[0];
}
return Request.ServerVariables["REMOTE_ADDR"];
}
尝试使用这个
string ip=System.Net.Dns.GetHostEntry
(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString();
在我的项目中需要获取本地计算机IP地址。所以我使用了以下代码:
请尝试下面的代码
string strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
string ip = addr[1].ToString();