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);
}
}
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn