微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Xamarin.Android上通过NetworkInterfaces循环时没有网关地址

如何解决在Xamarin.Android上通过NetworkInterfaces循环时没有网关地址

我正在尝试扫描移动设备的本地IP地址以ping网络中的所有其他设备,并发现本地IP地址。 第一步,我要像这样检索本地NetworkInterface的GatewayAddress:

foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
{
    if (f.OperationalStatus == OperationalStatus.Up)
    {
        foreach (GatewayIPAddressinformation d in f.GetIPProperties().GatewayAddresses)
        {
            ip = d.Address.ToString();
        }
    }
}

这在iOS上运行良好,但是在Android上GatewayAdresses的计数为0。就我的研究而言,Xamarin中存在NetworkInterface错误,但目前似乎已全部修复。

解决方法

您可以使用代码获取ipv6和ipv4。

 foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (f.OperationalStatus == OperationalStatus.Up)
            {
                //foreach (GatewayIPAddressInformation d in f.GetIPProperties().GatewayAddresses)
                //{
                //    var ip = d.Address.ToString();
                //}
                IPAddress ipv6Address = f.GetIPProperties().UnicastAddresses[0].Address; //This will give ipv6 address of certain adapter
                IPAddress ipv4Address = f.GetIPProperties().UnicastAddresses[1].Address; //This will give ipv4 address of certain adapter

            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。