概述

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

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

issue:

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

  • 源码地址: PhoneNetSDK
  • 欢迎fork & star

实现过程

原理:

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

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

SDK存在的弊端:

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

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

ios平台实现局域网ip扫描相关推荐

  1. Python Pyside2 多线程实现局域网IP扫描

    利用pyside2实现带界面的局域网IP扫描工具 from PySide2.QtWidgets import QApplication, QMessageBox from PySide2.QtUiTo ...

  2. 网络通(修复网络、ip切换、局域网ip扫描、安全设置等)

    本帖最后由 谁伴我闯荡me 于 2013-3-6 08:25 编辑 软件名称: 新微 网络通 版本:3.0.8.1 -----------------程序功能----------------      ...

  3. 局域网ip扫描工具_让你局域网里聊天、发送图片、视频与文件

    ▲ 微信扫描二维码关注 有时候想给旁边的朋友发送文件,突然发现自己的流量不够了! 附近也没有无线网! 难道只能回家再发送文件了吗? 不!有了这款软件你随时随地的给朋友发送文件! 没有流量限制!唯一的要 ...

  4. 解决同一个局域网两个DHCP冲突问题--涉及到局域网IP扫描,主机操作系统扫描,mac地址查询

    最近这几天我们大优能公司的网络(网段为10.0.0.1/24)总是出问题,常有一部分机器获取到192.168.1.0/24网段的IP和DNS,这部分机器无法上网且邮箱均不能用.公司同事囧的不成样子,不 ...

  5. IOS开发——获取局域网IP

    头文件 [plain] view plaincop #include <arpa/inet.h> #include <net/if.h> #include <ifaddr ...

  6. 使用 arp-scan 快速扫描局域网 IP -> raspberry pi ssh vnc

    简介 在使用 ssh/vnc 对树莓派进行远程操作的时候,都需要获取树莓派的 IP.常见的办法是路由器管理页面或者使用 Advanced IP Scanner.但是我既没有路由器,也没搞懂这个软件怎么 ...

  7. java 监控 局域网_使用Java实现简单的局域网设备扫描

    在产品的使用中我们一般都要设置一个配置环节,这个环节可以设定主机的IP地址等信息,但是这样配置的话使得我们的产品用起来效果不是很好,因此我想到了实现局域网IP扫描的功能,IP局域网扫描是指定IP网段获 ...

  8. java扫描局域网中可用ip_使用java线程扫描局域网ip简单方案

    package com.cjh.thread; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  9. 扫描局域网IP和MAC的有力工具BPSNMPUtil

    扫描局域网IP和MAC的有力工具,其他工具和它比起来简直弱爆了,它能扫描识别出小.中.大型网络基本所有在线电脑的IP地址和其对应的MAC地址,请看下面的截图: 转载于:https://blog.51c ...

最新文章

  1. 用UltraISO制作U盘启动盘,支持windows 7
  2. Hibernate中HQL函数汇总及其说明
  3. tcp/ip 协议栈Linux内核源码分析15 udp套接字接收流程二
  4. 数据网络卡顿怎么处理_监控网络卡顿怎么办
  5. rbac权限管理5张表_PHP之常用的RBAC权限管理详解
  6. BZOJ3527: [Zjoi2014]力
  7. 敏捷项目开源管理软件ScrumBasic(2)- 多项目支持
  8. 误删docker0网桥之后怎么办呢?
  9. Laravel 5.4: 特殊字段太长报错 420000 字段太长
  10. background:url(./images.png) no-repeat 0 center的用法
  11. 知道吗?9个搜索引擎优化(SEO)最佳实践
  12. 用vue开发的h5商城小程序,thinkphp5开发拼团、砍价、秒杀、优惠券、积分、分销等功能
  13. 从0开始学习WBE前端
  14. Java——课设——图书管理系统实现
  15. 蛋白互作常用的研究方法
  16. 40种顶级思维模型,学会任何1种都让你受用无穷,赶紧点赞收藏
  17. java中对象有什么优点,Java:示例中不可变对象的优点
  18. 遥感影像语义分割论文笔记(一)FarSeg CVPR2020
  19. 青岛大学计算机科学学院,青岛大学信息工程学院
  20. GNU GRUBversion 2.04Minimal BASH-like line editing is supported.For the first word

热门文章

  1. ubuntu网站收集
  2. 探寻完美 之 JavaScript继承
  3. CCNA网络小菜鸟笔记之(第十一章, 广域网协议)
  4. ThinkPHP5.1开启调试和错误提示
  5. Bone collector//动态规划
  6. 4.安卓基础之Activity跳转动画
  7. Dubbo -- 系统学习 笔记 -- 目录
  8. Linux 多线程可重入函数
  9. 关于IKAnalyzer自定义分词的切换主词典的方法
  10. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。