如何解决在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 举报,一经查实,本站将立刻删除。