【问题标题】:read past bandswitch读过去的bandswitch
【发布时间】:2010-05-28 03:16:55
【问题描述】:

我知道有一种读取波段切换的方法。

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    iPhone SDK 中没有记录的方式来执行此操作。我很确定他们使用的是标准 BSD 调用 sysctl(),因此它也必须存在于 iPhone OSX 上。

    看到这个答案: How to get network adapter stats in linux/Mac OSX?

    一个很好的问题是他们是如何通过 Appstore 程序的。我认为 sysctl() 大约是从记录 API 到未记录 API 的“一半”:SDK 文档中没有提到它,但它存在于所有 BSD 系统上。因此,Apple 可能没有(或没有)过滤标准 BSD 调用,这就是他们让 sysctl() 通过的原因。

    更新:我在 iPhone 模拟器上成功运行了这个 netstat 代码(我目前没有 iPhone 设备)。我所要做的就是注释掉#include <net/route.h>,因为它在 iPhone SDK 中不存在,并从此标头复制以下定义:

    #define RTM_IFINFO2 0x12
    

    所以它比我想象的要简单。因为在这段代码中基本上没有不在 SDK 头文件中的函数调用,所以如果你使用这段代码,Apple 可能会批准你的应用程序(它们不能过滤简单的常量......)。

    【讨论】:

    • 谢谢。怎样识别bandswitch是3G还是wifi?
    • 您正在 for() 循环中迭代网络适配器(在我的模拟器上它给出了 7 个结果,这等于 ifconfig 打印的网络适配器的数量)。根据标头,接口类型在 if2m->ifm_data.ifi_type 中。不确定具体的数值,但您可以将输入/输出字节与另一个统计工具进行比较以找出它们:)
    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多