您的位置:首页 > 编程语言 > ASP

ASP.NET获取IP和MAC代码(C#)

2009-12-16 21:15 501 查看
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Management;
using System.Management.Instrumentation;
using System.Runtime.Remoting.Contexts;
using System.Web;

namespace ComLib
{
public class GetIP_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);

public static string GetIP()
{
string ip = "";
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) // 服务器, using proxy
{
//得到真实的客户端地址
ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP.
}
else//如果没有使用代理服务器或者得不到客户端的ip not using proxy or can't get the Client IP
{

//得到服务端的地址
ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
}
return ip;
}
/// <summary>
/// 获取MAC地址
/// </summary>
/// <returns></returns>
public static string GetMAC()
{
try
{
string userip = System.Web.HttpContext.Current.Request.UserHostAddress;
string strClientIP = System.Web.HttpContext.Current.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");
string mac_dest = "";
//if (mac_src == "0")
//{
// if (userip == "127.0.0.1")
// mac_dest = "正在访问Localhost!";
// else
// mac_dest = "欢迎来自IP为" + userip + "的朋友!" + "<br>";
// return mac_dest;
//}

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

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>");
return mac_dest;

}
catch
{
return "找不到主机信息";
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: