| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

C# 在指定的IP地址中获得一个设备的MAC(物理)地址

using System.Net;  using System.Net.NetworkInformation;    /// <summary>  /// Holds utilities for working with networks, Ethernet, etc.  /// </summary>  public static class NetworkUtils  {      //    http://www.codeproject.com/KB/IP/host_info_within_network.aspx      [System.Runtime.InteropServices.DllImport("iphlpapi.dll",    ExactSpelling = true)]      static extern int SendARP(int DestIP, int SrcIP, byte[]    pMacAddr, ref int PhyAddrLen);        /// <summary>      /// Gets the MAC address (<see cref="PhysicalAddress"/>)    associated with the specified IP.      /// </summary>      /// <param name="ipAddress">The remote IP address.</param>      /// <returns>The remote machine's MAC address.</returns>      public static PhysicalAddress GetMacAddress(IPAddress    ipAddress)      {          const int MacAddressLength = 6;          int length = MacAddressLength;          var macBytes = new byte[MacAddressLength];          SendARP(BitConverter.ToInt32(ipAddress.GetAddressBytes(),    0), 0, macBytes, ref length);          return new PhysicalAddress(macBytes);      }  }    [TestClass()]  public class NetworkUtilsTests  {      [TestMethod()]      public void GetMacAddress_BroadcastIP_NonzeroMac()      {          IPAddress ipAddress = IPAddress.Broadcast;            PhysicalAddress actual = NetworkUtils.GetMacAddress   (ipAddress);          Console.WriteLine(actual.ToString());            Assert.AreNotEqual(PhysicalAddress.None, actual);      }  }