MMLanScan

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

iOS 11 重要提示

iOS 11 破坏了从 ARP 表检索 MAC 地址的功能,因此在 iOS 11 上,MMLanScan 将无法正常获取 MAC 地址和品牌名称。我们仍然使用 MacFinder,因为它有助于发现那些不回复 ping 的在线设备。

注意

你可以在这里!找到 MMLanScan 的 NativeScript 封装。

截图

image

特性

手动安装

CocoaPods 安装

要使用 CocoaPods 安装,只需将以下行添加到你的 Podfile 中

pod 'MMLanScan'

如何使用 (Objective C)

在你的控制器中导入 MMLANScanner

#import "MMLANScanner.h"

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

@interface YourViewController () <MMLANScannerDelegate>

声明一个属性

@property(nonatomic,strong)MMLANScanner *lanScanner;

使用 delegate 初始化

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

开始扫描

[self.lanScanner start];

实现 delegate 方法来接收事件

- (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()

实现 delegate 方法来接收事件

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 相比,扫描时间和 UI 交互都得到了改进。 此外,V1.0 忽略了未回复 ping 的主机。 V2.0 不会忽略,因此结果现在更加准确。

待办事项

如果有人愿意帮忙

更多细节

请访问我的 文章 以了解有关 MMLanScan 的更多详细信息

作者

鸣谢

许可证

版权所有 Miksoft 2017

在 MIT 许可证下发布