MMLanScan 是一个 iOS 平台的开源项目,它可以帮助你扫描你的网络,并显示可用的设备以及它们的 MAC 地址、主机名和品牌名称。
iOS 11 破坏了从 ARP 表检索 MAC 地址的功能,因此在 iOS 11 上,MMLanScan 将无法正常获取 MAC 地址和品牌名称。我们仍然使用 MacFinder,因为它有助于发现那些不回复 ping 的在线设备。
你可以在这里!找到 MMLanScan 的 NativeScript 封装。
要使用 CocoaPods 安装,只需将以下行添加到你的 Podfile 中
pod 'MMLanScan'
在你的控制器中导入 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;
将 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 V2.0 现在使用 NSOperation 和 NSOperationQueueManager。 与 V1.0 相比,扫描时间和 UI 交互都得到了改进。 此外,V1.0 忽略了未回复 ping 的主机。 V2.0 不会忽略,因此结果现在更加准确。
如果有人愿意帮忙
[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}\s*\(hex\)\s*[A-Za-z\.\, \-]+
)请访问我的 文章 以了解有关 MMLanScan 的更多详细信息
版权所有 Miksoft 2017
在 MIT 许可证下发布