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

2021-11-02 15:58:26 浏览数 (1)

代码语言:javascript复制
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);
}

}</pre> 
c# ip

0 人点赞