[DllImport("iphlpapi.dll", ExactSpelling=true)]
public static extern int SendARP( int DestIP, int SrcIP, byte[] pMacAddr, ref uint PhyAddrLen );
Declare Function SendARP Lib "iphlpapi.dll" (ByVal DestIP As UInt32 _
, ByVal SrcIP As UInt32, ByVal pMacAddr As Byte(), ByRef PhyAddrLen As Integer) As Integer
None.
SendARP returns 0 on success. The parameter SrcIP can be 0.
Please add some!
The DestIP and SrcIP arguments should be UInt32 to avoid System.OverflowException when the last nibble of the IP-address is .128 or greater.
This code help to get the MAC Address of a network card (You need to know the IP address)
Public Shared Function GetMAC(ByVal IPAddress As String) As String
Dim addr As IPAddress = IPAddress.Parse(IPAddress)
Dim mac() As Byte = New Byte(6) {}
Dim len As Integer = mac.Length
SendARP(CType(addr.Address, UInt32), 0, mac, len)
Dim macAddress As String = BitConverter.ToString(mac, 0, len)
Return macAddress
End Function
This is a similar C# sample
IPAddress dst = IPAddress.Parse("192.168.2.1"); // the destination IP address Note:Can Someone give the code to get the IP address of the server
byte[] macAddr = new byte[6];
uint macAddrLen = (uint)macAddr.Length;
if (SendARP((int)dst.Address, 0, macAddr, ref macAddrLen) != 0)
throw new InvalidOperationException("SendARP failed.");
string[] str = new string[(int)macAddrLen];
for (int i=0; i<macAddrLen; i++)
str[i] = macAddr[i].ToString("x2");
Console.WriteLine(string.Join(":", str));
Do you know one? Please contribute it!