iOS-一个新的LAN网络扫描程序库已经诞生

它是如何开始的

2011年3月,当我为iOS开发我的第一个真实项目时,IT Buddy最初是一个IP计算器,现在被认为是真正的IT Buddy! 从第一天开始,我就考虑在IT Buddy中添加LAN扫描程序的情况,但是我的知识有限,没有任何我可以使用的开源项目。

五年后,仍然没有像样的LAN扫描程序库。 有几个可用的LAN扫描仪,但尚未投入生产。

没有适用于iOS的不错的LAN扫描程序库

很多人在StackOverflow上询问如何实现LAN扫描仪,所以我决定将所有部分放在一起(SimplePing,SimplePingHelper,LAN-Scan和MacFinder),并创建一个不错的开源库来通过iOS设备扫描网络。 。

体面的意思是:

  1. 不仅可以扫描所有子网/ 24
  2. 快速搜索而不会阻塞UI
  3. 使用默认的LAN扫描技术来ping和查询ARP表。
  4. 显示可用主机的IP和MAC地址。
  5. 根据MAC地址显示设备品牌

MMLanScan

因此,名称为MMLanScan,并且非常易于使用。

在此处下载并在您的项目中复制MMLanScan文件夹!

在您的控制器中导入MMLANScanner

  #import“ MMLANScanner.h” 

将MMLANScannerDelegate添加到您的控制器

  @interface YourViewController() 

声明MMLANScanner属性

  @property(nonatomic,strong)MMLANScanner * lanScanner; 

开始扫描

  [self.lanScanner停止]; 
self.lanScanner = [[MMLANScanner alloc] initWithDelegate:self];
self.connectedDevices = [[NSMutableArray alloc] init];
[self.lanScanner启动];

实现委托方法以接收事件

  -(void)lanScanDidFindNewAddressWithIP:(NSString *)ipAddress MACAddress:(NSString *)macAddress和Hostname:(NSString *)hostname; 
-(void)lanScanDidFinishScanning;
-(void)lanScanProgressPinged:(NSInteger)pingedHosts from:(NSInteger)overallHosts;
-(void)lanScanDidFailedToScan;

怎么运行的

MMLanScan的工作方式类似于传统的网络扫描仪。 它首先对网络中的每个主机执行ping操作,以构建ARP表,然后尝试获取每个主机的MAC地址。 如果找到了MAC地址,则认为该主机存在于网络中。

技术资料

由于已修改为可与MMLanScan一起使用,因此请勿更新SimplePingHelper

去做

MMLanScan并不完美,还有改进的空间。

因此,如果有人想提供帮助:

  • C̶o̶n̶v̶e̶r̶t̶̶t̶h̶e̶̶O̶U̶I̶̶t̶e̶x̶t̶̶i̶n̶̶a̶̶d̶i̶c̶t̶i̶o̶n̶a̶r̶̶̶a̶n̶̶
  • 使它在后台线程中工作。 Apple的SimplePing在涉及GCD时存在问题(它基于C库,似乎它们的回调不适用于GCD)
  • 从IP地址获取主机名方法不起作用

如果您喜欢这篇文章,请查看我们关于移动和技术的出版物Rock n Null!

您可以在此处找到该库和一个演示项目!