Return to Snippet

Revision: 47118
at June 1, 2011 08:50 by pckujawa

Initial Code
using System.Net;
using System.Net.NetworkInformation;

/// <summary>
/// Holds utilities for working with networks, Ethernet, etc.
/// </summary>
public static class NetworkUtils
    [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);

public class NetworkUtilsTests
    public void GetMacAddress_BroadcastIP_NonzeroMac()
        IPAddress ipAddress = IPAddress.Broadcast;

        PhysicalAddress actual = NetworkUtils.GetMacAddress(ipAddress);
        Assert.AreNotEqual(PhysicalAddress.None, actual);

Initial URL

Initial Description
This is about the simplest way I've found. See [this]( and [this]( at StackOverflow for more info.

Initial Title
Get the MAC (Physical) address from a device at the specified IP address

Initial Tags

Initial Language