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

jopen的头像 jopen 1016 2015-11-05 16:46 0

 基本信息

× 1   

浏览数: 3865

分享时间: 3 年 前

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


  • 76847987的头像 76847987 2019-01-09 16:05 代码数:0

    学习了,谢谢

您的评论: