2014-02-13 184 views
0

如何获得公共IP地址,局域网IP地址&客户机在MVC 4中的MAC地址在MVC 4中获取公共IP地址,客户机的Lan IP地址和MAC地址?

我正在尝试获取客户端计算机的IP地址。 Request.UserHostAddress给出Lan IP地址,但是

  • 全球IP地址呢?
  • 如何获取公共IP地址?
  • 谷歌,whatismyip.com和其他许多网站如何选择我们的公有IP地址等。
+2

如果您位于同一个Lan上,您只能获得Lan IP地址。同样,基于互联网的服务只能看到公共IP地址,因为您可以通过互联网访问它们。如果你在同一个网络链路上,你只能看到MAC地址。您要求提供3种不同的信息,这些信息都在完全不同的级别上运行。你想要解决什么实际问题? –

+0

鉴于您的[评论](http://stackoverflow.com/questions/21751402/get-public-ip-address-lan-ip-address-mac-address-of-clients-machine-in-mvc-4#comment32901883_21751542 )询问_“如何唯一标识访问者?”_,我会说这是与[如何在ASP.NET应用程序中唯一标识客户端机器?](http://stackoverflow.com/questions/4609316 /如何对唯一-识别最客户机功能于一个-ASP净应用程序)。 – CodeCaster

回答

2

对于LAN IP地址:

string ip = System.Web.HttpContext.Current.Request.UserHostAddress; 

对于公共IP地址:

public static string GetPublicIP() 
{ 
    string url = "http://checkip.dyndns.org"; 
    System.Net.WebRequest req = System.Net.WebRequest.Create(url); 
    System.Net.WebResponse resp = req.GetResponse(); 
    System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); 
    string response = sr.ReadToEnd().Trim(); 
    string[] a = response.Split(':'); 
    string a2 = a[1].Substring(1); 
    string[] a3 = a2.Split('<'); 
    string a4 = a3[0]; 
    return a4; 
} 

private string GetPublicIpAddress() 
    { 
     var request = (HttpWebRequest)WebRequest.Create("http://ifconfig.me"); 

     request.UserAgent = "curl"; // this simulate curl linux command 

     string publicIPAddress; 

     request.Method = "GET"; 
     using (WebResponse response = request.GetResponse()) 
     { 
      using (var reader = new StreamReader(response.GetResponseStream())) 
      { 
       publicIPAddress = reader.ReadToEnd(); 
      } 
     } 

     return publicIPAddress.Replace("\n", ""); 
    } 

对于MAC地址:

public string GetMACAddress() 
{ 
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 
String sMacAddress = string.Empty; 
foreach (NetworkInterface adapter in nics) 
{ 
    if (sMacAddress == String.Empty)// only return MAC Address from first card 
    { 
     IPInterfaceProperties properties = adapter.GetIPProperties(); 
     sMacAddress = adapter.GetPhysicalAddress().ToString(); 
    } 
} return sMacAddress; 
} 

试试这个,它可能对你有帮助。

+0

GetMACAddress获取我的mac地址。我想获取客户端PC的mac地址。 – AKASH

+0

@ user3252143 - 是的,获取公共IP地址的方法是获取*您的*公共IP地址,而不是客户端。正如我在评论中试图表明的那样,我可以想到,将这三条信息放在一起会帮助您解决问题,这没有任何问题。 –

+0

那么,如果他访问我的网站,我将如何获得客户的公共IP地址? – AKASH