获取本地IP地址

12

我正在尝试使用Mono for Android获取我的Android设备的本地IP地址,但失败了。

我用于完整框架和简洁框架的代码如下:

var iplist = (from a in Dns.GetHostAddresses(Dns.GetHostName())
              where a.AddressFamily == AddressFamily.InterNetwork
              select a).ToArray();
LocalAddress = iplist[0];

然而,在M4A中,它会早早地出现问题-Dns.GetHostName()调用失败,并显示以下错误:

System.Net.Sockets.SocketException: 使用了与请求的协议不兼容的地址

在M4A下是否已知存在Dns.GetHostName的问题?是否有其他方法可以使用M4A获取本地地址?

1个回答

8
原来这是 Mono Socket 实现内部抛出的异常,与运行时尝试确定是否支持 IPv6 相关 (源代码在此,截至撰写本文时为第 810 行)。
在 Mono 下首次尝试使用任何 Socket 时会抛出该异常,可以安全地忽略它。如果你正在使用调试器以“在所有抛出的异常处中断”模式运行代码(我偶尔这样做以确保代码的清洁性),则必须特别关闭 SocketExceptions 或者继续执行该断点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接