Get MAC Address in linux using mono

前端 未结 1 1920
感动是毒
感动是毒 2021-01-04 15:14

How do I get the MAC address of my computer in a Mono application on Linux?

相关标签:
1条回答
  • 2021-01-04 15:36

    Borrowed from MSDN, tested on VS2008 and mono 2.4.2.3 (Debian 2.4.2.3+dfsg-2):

    using System;
    using System.Net.NetworkInformation;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            public static void ShowNetworkInterfaces()
            {
                IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
                NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                Console.WriteLine("Interface information for {0}.{1}     ",
                        computerProperties.HostName, computerProperties.DomainName);
    
                if (nics == null || nics.Length < 1)
                {
                    Console.WriteLine("  No network interfaces found.");
                    return;
                }
    
                Console.WriteLine("  Number of interfaces .................... : {0}", nics.Length);
    
                foreach (NetworkInterface adapter in nics)
                {
                    Console.WriteLine();
                    Console.WriteLine(adapter.Description);
                    Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '='));
                    Console.WriteLine("  Interface type .......................... : {0}", adapter.Netwo$
                    Console.Write("  Physical address ........................ : ");
                    PhysicalAddress address = adapter.GetPhysicalAddress();
                    byte[] bytes = address.GetAddressBytes();
                    for (int i = 0; i < bytes.Length; i++)
                    {
                        // Display the physical address in hexadecimal.
                        Console.Write("{0}", bytes[i].ToString("X2"));
                        // Insert a hyphen after each byte, unless we are at the end of the
                        // address.
                        if (i != bytes.Length - 1)
                        {
                            Console.Write("-");
                        }
                    }
                    Console.WriteLine();
                }
            }
    
            static void Main(string[] args)
            {
                ShowNetworkInterfaces();
            }
        }
    }
    

    outputs (linux):

    Interface information for hera.(none)
      Number of interfaces .................... : 2
    
    lo
    ==
      Interface type .......................... : Loopback
      Physical address ........................ :
    
    eth0
    ====
      Interface type .......................... : Ethernet
      Physical address ........................ : 00-26-xx-xx-xx-xx
    
    0 讨论(0)
提交回复
热议问题