MMLanScan 是一个开源项目,用于 iOS 设备,帮助您扫描网络并显示可用的设备和它们的 MAC 地址、主机名和品牌名称。
您可以在 此处 找到 MMLanScan 的 NativeScript 封装包!
在您的控制器中导入 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;
在将 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 V2.0 现在使用 NSOperation 和 NSOperationQueueManager。与 V1.0 相比,扫描时间界面交互得到了改善。此外,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 许可