ios平台实现局域网ip扫描

开发中常需在同一WIFI下发现并连接其他设备。开源库MMLanScan有诸多问题,作者在PhoneNetSDK中添加局域网IP扫描功能并分享。其原理是根据子网掩码和本机IP计算可用IP,ping这些IP判断是否活跃,SDK通过代理告知上层结果,但局域网机器防火墙禁止ICMP协议时无法探测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

在开发中,我们可能经常遇到在同一WIFI环境下发现其它设备并与其连接的需求,所以我们第一步就是要能在同一WIFI下面能发现其它的设备。

在github上有一个开源的库叫MMLanScan,其主要的功能是获取局域网其它设备的mac地址(由于苹果的限制,ios7之后无法获取)和ip地址,但是其有太多的issue,亲测发现造成此种crash的原因都是它的任务线程过久没有完全退出,然后操作又特别频繁造成的。

issue:

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

实现过程

原理:

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

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

SDK存在的弊端:

  • 如果局域网内的机器防火墙禁止了ICMP协议的接收和转发则无法探测到

转载于:https://juejin.im/post/5d0885fff265da1b725c0485

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值