首页  >  文章  >  类库下载  >  C# 在指定的IP地址中获得一个设备的MAC(物理)地址

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

大家讲道理
大家讲道理原创
2016-11-10 09:20:292359浏览

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&#39;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);
    }
}

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn