【发布时间】:2021-01-19 10:48:33
【问题描述】:
在我的客户端服务器解决方案中,我需要前端设备的 MAC 地址,运行我的 Xamarin.Forms 应用程序。目前我刚刚得到Wifi 连接的Mac 地址在有关设备的信息中是正确的。但是,我使用了mobile data,然后在设备中获取的 Mac 地址不正确。
var lstAllNetWorkInfaces = NetworkInterface.GetAllNetworkInterfaces();
var ni = lstAllNetWorkInfaces.FirstOrDefault(intf => (intf.OperationalStatus == OperationalStatus.Up)
&& (intf.NetworkInterfaceType == NetworkInterfaceType.Wireless80211
|| intf.NetworkInterfaceType == NetworkInterfaceType.Ethernet));
var hw = ni.GetPhysicalAddress();
physicalWifiAddress = string.Join(":", (from ma in hw.GetAddressBytes() select ma.ToString("X2")).ToArray());
如果有错误或者您找到了更好的解决方案,请告诉我。
【问题讨论】:
-
客户端和服务器在同一个网络吗?
-
你好,MAC是干什么用的?
-
你的机器有一个 ARP 表。试试 cmd.exe >ARP -A.ARP 表有 MAC 地址。当任何机器在本地网络中发送 ARP 消息时,ARP 表会更新.引脚的响应也包含MAC。你得到physicalAddress() 方法读取ARP 表。如果该表不包含机器的 IP 地址,那么您必须 ping 设备。很可能您没有获得 MAC,因为机器不在子网中。
-
@Cleptus 嗨,我想在平板电脑中获取 MAC 地址,通过移动数据连接,然后客户端和服务器不在同一个网络。
-
"我想在通过移动数据连接的平板电脑中获取 MAC 地址,然后客户端和服务器不在同一个网络。" MAC 地址仅在网络上可见或相关设备已连接,而不是在远程网络上。 MAC 地址的安全性是傻瓜游戏,因为更改 MAC 地址以欺骗有效地址非常容易。
标签: c# .net networking xamarin.forms xamarin.android