iPhone Wifi 扫描 Sumbler

标签 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];  
}

最佳答案

您尝试使用的 SOLStumbler 代码非常旧。这个东西(例如 WiFiManager)位于私有(private)框架中。这意味着苹果可以而且经常会更改它或从操作系统版本移动到版本。

我假设您现在使用的是 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 Wifi 扫描 Sumbler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660169/

相关文章:

ios - NSNetService Resolve ipv6 无法在其上发起http请求

c - 禁用退避延迟

iphone - XML 阅读器类中讨厌的新行和空格

iphone - 播放音频时iPhone振动

ios - 在 Xcode 7 中,我怎样才能拥有同名的静态库目标和框架目标?

swift - iOS 模拟器中不需要的动画和控制台错误

ios - UITableView 不准确地发布其内容

iphone - UIScrollView滚动条颜色?

arduino wifi 与 cylon.js 或 johnny5.js

java - 在 Android 和 PC 之间创建 Wifi 点对点连接