iPhone Wifi Scan Stumbler

时间:2012-07-25 23:23:52

标签: iphone xcode wifi

我正在尝试从这里使用SOLStumbler:Accessing & Using the MobileWiFi.framework来扫描wifi网络。我知道这不是苹果支持的,但它用于教育目的和实验。我将以下文件添加到我的应用程序,它编译得很好,但它总是退出时出现错误代码。 (作为“.m”文件的一部分。)有谁知道如何使这个工作?

SOLStumbler.h

SOLStumbler.m

SOLStumbler.m的这一部分始终输出单个字母错误。通常为e,但有时为u

libHandle = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY);

    char *error;
    if (libHandle == NULL && (error = dlerror()) != NULL)  {
            NSLog(@"%c",error);
            exit(1);
    }

我的ViewController代码:

#import "SOLStumbler.h"

-(void)viewDidLoad{
    SOLStumbler *networksManager = [[SOLStumbler alloc] init];      
    [networksManager scanNetworks]; 
    NSLog(@"%@", [networksManager description]);
    [networksManager release];  
}

1 个答案:

答案 0 :(得分:2)

您尝试使用的SOLStumbler代码已经过时了。这些内容(例如 WiFiManager )位于私有框架中。这意味着,如果从操作系统版本到版本,Apple可以而且经常会改变它或移动。

我假设你现在正在使用iOS 5?

我登录了iOS 5手机,确实

/System/Library/SystemConfiguration/WiFiManager.bundle/

不存在。这就是你的代码失败的原因。

Have a look at this useful thread.

现在看来您可以在 IPConfiguration 框架中找到等效的(?)函数。试试这段代码:

libHandle = dlopen("/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);

我在越狱的iOS 5.0.1手机上运行它并且它有效(加载了dylib并找到了一些Apple80211功能)。从我链接到的那个帖子中,看起来你可能需要在越狱手机上的 / Applications 中安装它,以便完全运行。或者,可能不得不将一些权利添加到您的沙盒应用程序中。