我正在尝试从此处使用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];
}

最佳答案

您尝试使用的SOLStumbler代码已经很老了。这些东西(例如WiFiManager)在私有框架中。这意味着苹果可以并且经常会更改它,或者如果从一个操作系统版本到另一个版本都可以移动。

我认为您现在正在使用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中安装此程序,才能正常工作。或者,可能不得不在沙盒应用程序中添加一些权利。

关于iphone - iPhone Wifi扫描机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11660169/

10-10 17:37