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

asp.net 获取客户端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);
  protected void Page_Load(object sender, EventArgs e)
  {


  try
  {
  string userip = Request.UserHostAddress;
  string strClientIP = Request.UserHostAddress.ToString().Trim();
  Int32 ldest = inet_addr(strClientIP); //目的地的ip 
  Int32 lhost = inet_addr(""); //本地服务器的ip 
  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("正在访问Localhost!");
  else
  Response.Write("欢迎来自IP为" + userip + "的朋友!" + "<br>");
  return;
  }

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

  string mac_dest = "";

  for (int i = 0; i < 11; i++)
  {
  if (0 == (i % 2))
  {
  if (i == 10)
  {
  mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
  }
  else
  {
  mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
  }
  }
  }

  Response.Write("欢迎来自IP为" + userip + "<br>" + ",MAC地址为" + mac_dest + "的朋友!"

  + "<br>");
  }
  catch (Exception err)
  {
  Response.Write(err.Message);
  }
}这个方法在winxp下可以获取。但是放在2003上就不行了。在2003上面怎么获取客户端的mac地址呢?有知道的大大吗?给个代码最好

------解决方案--------------------
看下这个,也许有帮助。
http://stackoverflow.com/questions/10342086/what-is-aspnet-guid
// We're using HttpContextBase to allow access to cookies.
public string GetCartId(HttpContextBase context)
{
if (context.Session[CartSessionKey] == null)
{
if (!string.IsNullOrWhiteSpace(context.User.Identity.Name))
{
context.Session[CartSessionKey] =
context.User.Identity.Name;
}
else
{
// Generate a new random GUID using System.Guid class
Guid tempCartId = Guid.NewGuid();
// Send tempCartId back to client as a cookie
context.Session[CartSessionKey] = tempCartId.ToString();
}
}
return context.Session[CartSessionKey].ToString();
}