日期:2014-05-17  浏览次数:20459 次

急,asp.net 如何获得客户端ip和物理网卡地址
asp.net 如何获得客户端ip和物理网卡地址?谢谢

------解决方案--------------------


Request.UserHostAddress
Request.UserHostName
Request.AnonymousID
Request.UserAgent


------解决方案--------------------
......想干什么呢.....
LS的居然还告诉他.....
------解决方案--------------------
客户端IP容易获取(内网用户获取的是公网的IP地址)
客户端物理网卡地址需要AcitveX.
------解决方案--------------------
  private static string getIp()
    {
        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
            return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
        else
            return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    }

------解决方案--------------------
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;
  }


获取MAC地址:

[DllImport("Iphlpapi.dll")] 
  private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length); 
  [DllImport("Ws2_32.dll")]
  private static extern Int32 inet_addr(string ip);

  private void Page_Load(object sender, System.EventArgs e)
  {
  try
  {
  string userip=Request.UserHostAddress;
  string strClientIP = Request.UserHostAddress.ToString().Trim();
  Int32 ldest = inet_addr(strClientIP); 
  Int32 lhost = inet_addr("");  
  Int64 macinfo = new Int64(); 
  Int32 len = 6; 
  int res = SendARP(ldest,0, ref macinfo, ref len);
  string mac_src=macinfo.ToString("X");
  if(mac_src == "0")
  {
  if(userip=="127.0.0.1")
  Response.Write ("");
  else
  Response.Write ("" + userip + "" + "<br>");
  return;
  }

  while(mac_src.Length<12)
  {
  mac_src = mac_src.Insert(0,"0");