Revision: 47118
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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
{
// 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);
}
}
Initial URL
http://www.codeproject.com/KB/IP/host_info_within_network.aspx
Initial Description
This is about the simplest way I've found. See [this](http://stackoverflow.com/questions/1092463/getting-the-mac-address-of-the-remote-host) and [this](http://stackoverflow.com/questions/1092379/want-to-get-mac-address-of-remote-pc/1092392#1092392) at StackOverflow for more info.
Initial Title
Get the MAC (Physical) address from a device at the specified IP address
Initial Tags
mac
Initial Language
C#