【问题标题】:iPhone Wifi Scan StumbleriPhone Wifi 扫描绊脚石
【发布时间】:2012-07-25 23:23:52
【问题描述】:

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

【问题讨论】:

  • 哪个错误代码?请不要告诉我们它不起作用。告诉我们什么不起作用,以及您看到什么症状。你在调试器中运行了吗?你看见什么了?你的NSLog 声明打印了什么?
  • 我添加了有关错误声明的更多信息。它输出一个字母作为 SOLStumbler.m 文件代码的一部分
  • 这是越狱手机吗?
  • 我认为你的错误打印代码是错误的。
  • @RichardJ.RossIII,他直接从 SOLStumbler 源代码中提取了该代码。无论如何,除非libHandle == NULL,否则您甚至无法访问该代码,这是由框架路径更改引起的问题。

标签: iphone xcode wifi


【解决方案1】:

您尝试使用的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 中安装它,才能充分工作。或者,可能不得不为您的沙盒应用添加一些权利

【讨论】:

  • 谢谢你。我只需要为我的操作系统版本找到等效的框架!谢谢! :D
  • libHandle = dlopen("/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);
    不适用于 iphone 5S OS 7.1
猜你喜欢
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多