MMLanScan 3.0.0

MMLanScan 3.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2017年9月

Michael Mavris 维护。



MMLanScan 3.0.0

  • Michael Mavris

MMLanScan 是一个开源项目,用于 iOS 设备,帮助您扫描网络并显示可用的设备和它们的 MAC 地址、主机名和品牌名称。

注意

您可以在 此处 找到 MMLanScan 的 NativeScript 封装包!

屏幕截图

image

功能

  • 扫描并找到网络中的可用主机
  • 显示 IP 地址
  • 显示 MAC 地址
  • 基于 MAC 地址显示设备品牌
  • 显示主机名(如果可用)
  • 扫描任何子网(不限于 /24)
  • 您有权更新 OUI(MAC-品牌映射)plist 文件。在 MainPresenter.m 中检查更多详情

手动安装

  • 将 MMLanScan 文件夹拖放到您的项目文件夹中。

如何使用它(Objective C)

在您的控制器中导入 MMLANScanner

#import "MMLANScanner.h"

将 MMLANScannerDelegate(协议)添加到您的控制器中

@interface YourViewController () <MMLANScannerDelegate>

声明一个属性

@property(nonatomic,strong)MMLANScanner *lanScanner;

用代理初始化

self.lanScanner = [[MMLANScanner alloc] initWithDelegate:self];

开始扫描

[self.lanScanner start];

实现代理方法以接收事件

- (void)lanScanDidFindNewDevice:(MMDevice*)device;
- (void)lanScanDidFinishScanningWithStatus:(MMLanScannerStatus)status;
- (void)lanScanProgressPinged:(NSInteger)pingedHosts from:(NSInteger)overallHosts;
- (void)lanScanDidFailedToScan;

如何使用它(Swift)

在将 MMLanScan 文件夹拖放到您的 Swift 项目中后,Xcode 将要求您创建一个桥接头文件。创建桥接头文件并在 #define#endif 之间粘贴以下内容:

#import "MMLANScanner.h"
#import "LANProperties.h"
#import "PingOperation.h"
#import "MMLANScanner.h"
#import "MACOperation.h"
#import "MacFinder.h"
#import "MMDevice.h"

将 MMLANSCannerDelegate(协议)添加到您的控制器中

class MyVC: NSObject, MMLANScannerDelegate 

声明 MMLanScanner 的变量

var lanScanner : MMLANScanner!

初始化 MMLanScanner(初始化 self 之后)

self.lanScanner = MMLANScanner(delegate:self)

最后开始扫描

self.lanScanner.start()

或者停止扫描

self.lanScanner.stop()

实现代理方法以接收事件

func lanScanDidFindNewDevice(_ device: MMDevice!)
func lanScanDidFinishScanning(with status: MMLanScannerStatus)
func lanScanProgressPinged(_ pingedHosts: Float, from overallHosts: Int)
func lanScanDidFailedToScan()

项目示例

您可以在 Swift 或 Objective-C 中找到可用的项目示例。请随意复制/使用它们。注意:项目示例是使用软件设计模式 MVVM 编写的。

工作原理

MMLanScan 的运行方式类似于经典的网络扫描器。它首先ping网络中的每个设备以建立ARP表,然后尝试获取每个设备的MAC地址。如果找到MAC地址,则认为该设备存在于网络中。

用于构建 MMLanScan 的库

技术细节

MMLanScan V2.0 现在使用 NSOperation 和 NSOperationQueueManager。与 V1.0 相比,扫描时间界面交互得到了改善。此外,V1.0 会忽略未对ping做出响应的主机。V2.0 不会这样做,结果是现在更加准确。

待办事项

如果有人想要帮忙

  • 将 [OUI] (https://standards.ieee.org/develop/regauth/oui/oui.txt) 文本转换为字典,以便我们可以将MAC地址与厂商进行映射(提示:获取带有MAC地址和厂商的第一行的正则表达式:[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}\s*\(hex\)\s*[A-Za-z\.\, \-]+
  • 使其在后台线程中运行。当涉及到 GCD 时,Apple 的 SimplePing 存在问题(它基于 C 库构建,看来他们的回调与 GCD 不兼容)
  • 从IP地址获取主机名的方法不起作用
  • 任何你觉得可以改进这个库的地方。

更多信息

访问我的文章以获取 MMLanScan 的更详细信息

作者

  • Michael Mavris

致谢

许可

版权所有 Miksoft 2017

许可协议为 MIT 许可