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();
}
}
运行结果:
{
/// <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();
}
}
运行结果:
相关文章推荐
- C# 获取IP及MAC地址
- C#通过ARP获取指定IP的MAC地址
- c# 、 Asp.net 获取本地IP和MAC地址
- c#获取本地IP和MAC地址
- C#获取本地计算机名IP,Mac地址
- C# 获取局域网IP和MAC地址
- c#获取本地IP和MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- c#获取本地IP和MAC地址
- C#通过ARP获取指定IP的MAC地址
- C#获取本地计算机名IP,Mac地址
- C#获取IP及MAC地址
- C#获取路由器外网IP,MAC地址
- C#获取本地计算机名IP,Mac地址
- C# 获取 MAC 地址 IP 地址 最简单的
- C#获取IP及MAC地址的新方法
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- C#获取路由器外网IP,MAC地址的实现代码
- C# 获取本地IP客户端IP地址以及MAC地址
- C#获取本地计算机名,IP,MAC地址