使用API,利用ARP协议,只能获得同网段计算机的MAC
[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);
public static string GetRemoteMac(string clientIP)
{
string ip = clientIP;
if ( ip == "127.0.0.1")
ip = GetLocalIP()[0];
Int32 ldest=inet_addr(ip);
Int64 macinfo=new Int64();
Int32 len=6;
try
{
SendARP(ldest,0,ref macinfo,ref len);
}
catch
{
return "";
}
string originalMACAddress = Convert.ToString(macinfo,16);
if (originalMACAddress.Length<12)
{
originalMACAddress = originalMACAddress.PadLeft(12,'0');
}
string macAddress;
if(originalMACAddress!="0000" && originalMACAddress.Length==12)
{
string mac1,mac2,mac3,mac4,mac5,mac6;
mac1=originalMACAddress.Substring(10,2);
mac2=originalMACAddress.Substring(8,2);
mac3=originalMACAddress.Substring(6,2);
mac4=originalMACAddress.Substring(4,2);
mac5=originalMACAddress.Substring(2,2);
mac6=originalMACAddress.Substring(0,2);
macAddress=mac1+"-"+mac2+"-"+mac3+"-"+mac4+"-"+mac5+"-"+mac6;
}
else
{
macAddress="";
}
return macAddress.ToUpper();
}
分享到:
相关推荐
该方法通过获取本机IP和子网掩码,计算出整个网段的IP范围,然后利用ARP包获取每个IP对应的MAC地址,并使用多线程技术和委托技术来提高程序的运行速度和稳定性。 知识点: 1. ARP协议:ARP(Address Resolution ...
该文档是关于使用C#语言实现ARP扫描局域网中主机IP和MAC地址的一个项目报告。ARP(Address Resolution Protocol)是一种网络协议,用于通过IP地址查找对应的物理MAC地址。以下是该项目涉及的关键知识点: 1. **...
对于远程主机的MAC地址,C#提供了`SendARP` API函数,这个函数基于Address Resolution Protocol (ARP)协议工作。ARP是一种用于将IP地址映射到MAC地址的协议。然而,`SendARP`函数有其局限性,只能用于获取同一子网内...
这可能包括使用广播或多播请求,通过ARP协议(地址解析协议)或者特定的网络扫描库来查找网络上的设备。 总结,通过C#,我们可以轻松地获取局域网内设备的IP地址和MAC地址,并进行IP反向解析得到主机名。对于更复杂...
然而,获取远程主机的MAC地址则需要使用不同的方法,因为ARP(Address Resolution Protocol)协议通常不支持跨网段传输。在C#中,我们可以调用Windows API函数`SendARP`来实现这一目标。`SendARP`函数会发送一个ARP...
获取远程主机的MAC地址较为复杂,通常需要使用到API函数`SendARP`来发送ARP请求并解析响应。 ```csharp private const int ARP_FLAG_IF_NOT_FOUND = 0x0004; [DllImport("Iphlpapi.dll", SetLastError = true)] ...
在C#或Python等语言中,可以使用套接字API来实现IP的扫描。 2. **ARP协议**:ARP,Address Resolution Protocol,地址解析协议,用于将IP地址映射为MAC地址。当程序遍历IP地址时,会发送ARP请求到目标IP,目标设备...
总结来说,通过C#编程,我们可以获取本地计算机的IP、MAC等信息,同时也能尝试获取指定IP的MAC地址,但受限于ARP协议的工作范围,这通常只适用于同一局域网内的通信。在实际应用中,我们还需要考虑到异常处理和网络...