ios平台实现局域网ip扫描

概述

在开发中,咱们可能常常遇到在同一WIFI环境下发现其它设备并与其链接的需求,因此咱们第一步就是要能在同一WIFI下面能发现其它的设备。ios

在github上有一个开源的库叫MMLanScan,其主要的功能是获取局域网其它设备的mac地址(因为苹果的限制,ios7以后没法获取)和ip地址,可是其有太多的issue,亲测发现形成此种crash的缘由都是它的任务线程太久没有彻底退出,而后操做又特别频繁形成的。git

issue:github

基于以上缘由,我在PhoneNetSDK中添加了局域网IP扫描功能,特在此分享。markdown

实现过程

原理:oop

  • 根据其子网掩码和本机ip计算出有多少个可用ip
  • 而后分别ping这些ip,经过监听其是否有响应来判断这个ip是否处于活跃状态
  • SDK经过代理的方式告知上层哪些ip处于活跃状态并返回扫描进度

利用PhoneNetsdk开发的NetPinger中的局域网IP扫描功能截图以下:spa

SDK存在的弊端:线程

  • 若是局域网内的机器防火墙禁止了ICMP协议的接收和转发则没法探测到
相关文章
相关标签/搜索