如何在Xamarin中获取本地路由器地址(非设备IPv4地址)
获取路由器(网关)IP地址的正确实现
你当前的代码遍历网络接口获取的是设备自身的IPv4单播地址,而非路由器(网关)IP。要直接获取真实的路由器IP,可通过读取网络接口的默认网关地址实现,无需修改IP段:
public string GetRouterIPAddress() { foreach (var netInterface in NetworkInterface.GetAllNetworkInterfaces()) { // 仅处理活跃的无线/有线网络接口 if ((netInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || netInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet) && netInterface.OperationalStatus == OperationalStatus.Up) { var ipProperties = netInterface.GetIPProperties(); // 遍历网关地址,筛选IPv4类型的网关(即路由器IP) foreach (var gateway in ipProperties.GatewayAddresses) { if (gateway.Address.AddressFamily == AddressFamily.InterNetwork) { return gateway.Address.ToString(); } } } } return string.Empty; }
关键说明:
- 新增
OperationalStatus.Up判断,避免读取未激活的网络接口数据 - 通过
IPProperties.GatewayAddresses直接获取系统记录的网关地址,这就是路由器的内网IP - 精准筛选IPv4地址,适配你的需求场景
iPhone IP地址:192.168.0.19
路由器:192.168.0.1

内容的提问来源于stack exchange,提问作者iTag
相关产品推荐
相关产品推荐

