System.Net.NetworkInformation IPv4Mask 在 MonoTouch 中不起作用?

Posted

技术标签:

【中文标题】System.Net.NetworkInformation IPv4Mask 在 MonoTouch 中不起作用?【英文标题】:System.Net.NetworkInformation IPv4Mask not working in MonoTouch? 【发布时间】:2012-03-27 09:06:10 【问题描述】:

我使用以下代码获取 iPhone 上当前可用的网络接口列表:

foreach (NetworkInterface l__objNetworkInterface in NetworkInterface.GetAllNetworkInterfaces())

    foreach (UnicastIPAddressInformation l__objIPAddress in l__objNetworkInterface.GetIPProperties().UnicastAddresses)
    
        if (l__objAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
        
            if (l__objAddress.IPv4Mask != null) Console.WriteLine("IPv4 Mask: " + l__objAddress.IPv4Mask.ToString());
        
    

我的问题:调用属性 IPv4Mask 似乎会阻止代码(IPv4Mask 永远不会输出到控制台,iPhone 模拟器似乎在调用点停止处理)。

有人知道这个问题吗? IPv4Mask 属性是否未在 monotouch 中实现(我在 monotouch 或谷歌上找不到任何明确的信息)?

【问题讨论】:

【参考方案1】:

IPv4Maskis not implemented 用于单播中的 UnicastIPAddresses。

您的代码中似乎也有错字,您在第二次 foreach 中循环了 l__objIPAddress,但随后您在循环内访问了 l__objAddress

【讨论】:

似乎在 MacOs 的平台调用中,结构 ifaddrs 包含子网掩码。它只是没有连接到 U/nicastIPAddress 类中的 IPv4Mask 属性。 @Krumelur:很可能是因为没有人花时间去做。

以上是关于System.Net.NetworkInformation IPv4Mask 在 MonoTouch 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章