C# 获取本机IP MAC地址

本文介绍了一种使用C#语言获取计算机本地IP地址及MAC地址的方法。通过调用System.Net和System.Management命名空间下的API,实现了对IPv4地址及网络适配器配置信息的读取。

private voidbutton4_Click(object sender, EventArgs e)

        {

            GetIP();

            textBox1.Text = GetAddressIP();

            textBox2.Text = getHostIpName();

        }

        privatevoid GetIP() 

        { //Using System.net

      stringhostName = Dns.GetHostName();//   

     //System.Net.IPAddress[]addressList = Dns.GetHostByName(hostName).AddressList;//告GetHostByName()IPv4¤  

     System.Net.IPAddress[]addressList = Dns.GetHostAddresses(hostName);//IPv4IPv6    

     foreach (IPAddress ip inaddressList) 

     { 

        listBox1.Items.Add(ip.ToString()); 

     }

     MessageBox.Show(hostName);

        }

        ///<summary>

        ///获取本地的IP地址信息

        ///</summary>

        protectedstring GetAddressIP()

        {

            ///获取本地的IP地址信息

            stringAddressIP = string.Empty;

            foreach(IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList)

            {

                if(_IPAddress.AddressFamily.ToString() == "InterNetwork")

                {

                    AddressIP =_IPAddress.ToString();

                }

            }

            returnAddressIP;

         //   textBox1.Text = AddressIP;

        }

         //获取本机MAC地址

        //usingSystem.Management; 然后右击网站添加引用—— System.Management

        protectedstring getHostIpName()

        {

            stringmac = "";

            ManagementClassmc;

            mc = newManagementClass("Win32_NetworkAdapterConfiguration");

            ManagementObjectCollectionmoc = mc.GetInstances();

            foreach(ManagementObject mo in moc)

            {

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

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

            }

            returnmac;

        }

C#中,可以通过不同的方式获取本机IP地址MAC地址。 ### 获取本机IP地址 一种常见的方法是使用`System.Net`命名空间中的`Dns`类。以下是获取本机第一个IPv4地址的示例代码: ```csharp using System; using System.Net; class Program { static string GetIPAddress() { try { // 获取本机的主机信息 var hostEntry = Dns.GetHostEntry(Dns.GetHostName()); // 遍历主机的地址列表 foreach (var address in hostEntry.AddressList) { if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { return address.ToString(); } } return null; } catch (Exception) { return null; } } } ``` ### 获取本机MAC地址 可以使用`System.Net.NetworkInformation`命名空间中的类来获取MAC地址。以下是获取第一个以太网或无线接口类型的接口的MAC地址的示例代码: ```csharp using System; using System.Net.NetworkInformation; class Program { static string GetMACAddress() { try { // 获取所有的网络接口信息 var interfaces = NetworkInterface.GetAllNetworkInterfaces(); // 遍历接口列表 foreach (var nic in interfaces) { // 找到以太网或无线接口类型的接口 if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet || nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) { // 获取其物理地址 var macBytes = nic.GetPhysicalAddress().GetAddressBytes(); return BitConverter.ToString(macBytes).Replace("-", ":"); } } return null; } catch (Exception) { return null; } } } ``` ### 综合示例 将上述两个功能整合到一个程序中: ```csharp using System; using System.Net; using System.Net.NetworkInformation; class Program { static string GetIPAddress() { try { var hostEntry = Dns.GetHostEntry(Dns.GetHostName()); foreach (var address in hostEntry.AddressList) { if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { return address.ToString(); } } return null; } catch (Exception) { return null; } } static string GetMACAddress() { try { var interfaces = NetworkInterface.GetAllNetworkInterfaces(); foreach (var nic in interfaces) { if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet || nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) { var macBytes = nic.GetPhysicalAddress().GetAddressBytes(); return BitConverter.ToString(macBytes).Replace("-", ":"); } } return null; } catch (Exception) { return null; } } static void Main() { string ip = GetIPAddress(); string mac = GetMACAddress(); Console.WriteLine($"IP Address: {ip}"); Console.WriteLine($"MAC Address: {mac}"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值