【问题标题】:Getting local IP address获取本地 IP 地址
【发布时间】:2012-04-06 16:18:27
【问题描述】:

我正在尝试使用 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: An address incompatible with the requested protocol was used

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

【问题讨论】:

    标签: c# xamarin.android


    【解决方案1】:

    事实证明,这是 Mono Socket 实现内部引发的异常,与尝试确定是否支持 IPv6 的运行时有关(source here,撰写本文时的第 810 行)。

    第一次尝试在 Mono 下使用任何 Socket 时会引发异常,并且可以安全地忽略。如果您使用调试器运行“中断所有抛出的异常”(我偶尔会这样做以确保代码整洁),则您必须专门关闭 SocketExceptions 或仅继续此中断。

    【讨论】:

    • 很好地回答了您自己的问题。感谢您与我们分享它。
    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 2012-11-29
    • 2011-04-08
    • 2021-01-28
    • 2011-02-10
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多