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

前端之家收集整理的这篇文章主要介绍了C# 在指定的IP地址中获得一个设备的MAC(物理)地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

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

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

猜你在找的C#相关文章