C# socket获取对等方mac地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# socket获取对等方mac地址相关的知识,希望对你有一定的参考价值。

 1     [DllImport("Iphlpapi.dll")]
 2         private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
 3 
 4         public static string getRemoteMac(string remoteIP)
 5         {
 6             var addr = IPAddress.Parse(remoteIP);
 7             int ip4 = BitConverter.ToInt32((addr.GetAddressBytes()), 0);
 8 
 9             try
10             {
11                 long macinfo = 0;
12                 int len = 6;
13                 int res = SendARP(ip4, 0, ref macinfo, ref len);
14                 return Convert.ToString(macinfo, 16);
15             }
16             catch (Exception err)
17             {
18                 Console.WriteLine("Error:{0}", err.Message);
19             }
20             return 0.ToString();
21         }
22 
23     static void Main(string[] args)
24         {
25             Console.WriteLine(getRemoteMac("192.168.0.150"));
26             Console.ReadLine();
27         }

注意这种方式,很多大公司都有不同的防火墙,这种方式用arp攻击来实现的,但是有的防火墙会屏蔽arp攻击,这种方式不是很稳定

以上是关于C# socket获取对等方mac地址的主要内容,如果未能解决你的问题,请参考以下文章

Python socket.error:[Errno 104] 对等方重置连接

Python 处理 socket.error:[Errno 104] 连接由对等方重置

BitTorrent:发送请求的最佳速率?

在Python中,当在localhost上接受TCP套接字连接时,无法获得正确的对等体IP地址。

C#获取计算机的MAC地址“离线”

通过 Socket TCP/IP 发送数据时出错