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();
}
}
运行结果: