网上找了很多代码,都不能用,哪位高手给个提示?
只能获取和你在一个路由器、集线器下的机器的mac地址
因为本机的mac对应表不会保存非同一个路由器、集线器下的IP的mac地址
单纯从协议上是搞不出来的
除非用其他手段
HuaZai说的对,不在同一个网内,根本获取不了远程机器的IP地址。
其实你应该把的应用场景说出来,有时候是可以有其他的变通方法的
用WMI:
using System.Management;
Code public static string GetMacAddress() { ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection MOC = MC.GetInstances(); foreach (ManagementObject MO in MOC) { if ((bool) MO["IPEnabled"]) { return MO["MACAddress"].ToString(); } } return null; }
WINPCAP包有c#的移植版本吧。这个包主要是用于网络分析的。TCP包头里就有源和目标的MAC及端口。不过要对网络协议有了解
ASP.NET获取客户端的mac本身就是违反安全特性的; 如果是要使用唯一标识标记客户端可以通过别的方法。