现在的位置: 首页 > 综合 > 正文

C# 获取IP及MAC地址

2014年01月29日 ⁄ 综合 ⁄ 共 2963字 ⁄ 字号 评论关闭

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();
        }
    }

 

运行结果:

抱歉!评论已关闭.