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協議的接收和轉發則沒法探測到
相關文章
相關標籤/搜索