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

C# 获取IP及MAC地址

2012-03-31 13:41 477 查看
public class HostInfo

{

/// <summary>

/// IP正则表达式

/// </summary>

const string _pattern = @"^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$";

/// <summary>

/// 获取本机主机名

/// </summary>

/// <returns></returns>

public static string GetHostName()

{

return System.Net.Dns.GetHostName();

}

/// <summary>

/// 本机IP

/// </summary>

/// <returns></returns>

public static string GetIP() //获取IP

{

string HostName = System.Net.Dns.GetHostName(); //得到主机名

IPHostEntry IpEntry = Dns.GetHostEntry(HostName); //得到主机IP

var localIp = string.Empty;

foreach (var ip in IpEntry.AddressList)

{

localIp = ip.ToString();

if (Regex.IsMatch(localIp, _pattern))

break;

}

return localIp;

}

/// <summary>

/// 本机MAC

/// </summary>

/// <returns></returns>

public static string GetMac() //获取Mac

{

string MacAddr = null;

ManagementObjectSearcher Query = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration");

ManagementObjectCollection QueryCollection = Query.Get();

foreach (ManagementObject mo in QueryCollection)

{

if (mo["IPEnabled"].ToString() == "True")

MacAddr = mo["MacAddress"].ToString();

}

return (MacAddr);

}

/// <summary>

/// 外网IP

/// </summary>

/// <returns></returns>

public static string GetNetIP()

{

Uri uri = new Uri(@"http://www.ip138.com/ip2city.asp");//查本机网络IP的网页

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);

req.Method = "POST";

req.ContentType = @"application/x-www-form-urlencoded";

req.ContentLength = 0;

req.CookieContainer = new CookieContainer();

req.GetRequestStream().Write(new byte[0], 0, 0);

HttpWebResponse res = (HttpWebResponse)(req.GetResponse());

StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));

string txt = rs.ReadToEnd();

rs.Close();

req.Abort();

res.Close();

var ip = txt.Substring(txt.IndexOf('[') + 1, txt.Length - txt.LastIndexOf(']') - 11); //自己灵活取出IP

ip = ip.Trim('[').Trim(']');

if (Regex.IsMatch(ip, _pattern))

{

return ip;

}

return string.Empty;

}

}

class Program

{

static void Main(string[] args)

{

Console.WriteLine(string.Format("当前主机名是:{0}", HostInfo.GetHostName()));

Console.WriteLine(string.Format("当前本机IP是:{0}", HostInfo.GetIP()));

Console.WriteLine(string.Format("当前外网IP是:{0}", HostInfo.GetNetIP()));

Console.WriteLine(string.Format("当前网卡地址是:{0}", HostInfo.GetMac()));

Console.ReadLine();

}

}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: