日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态

發布時間:2025/1/21 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一直在做移動設備網絡方面的開發,最近項目需要解決ios設備判斷是否打開個人熱點。

經過網上搜索,找到一個比較笨的辦法,就是通過獲取status bar高度是否等于40來判斷熱點狀態。當有其他設備接入我的熱點后,ios會在status bar height添加一行藍底白色的文字提示有人接入,并一直保留在屏幕頂端,此時status bar height ==?40。不過這個方法不能判斷出在沒有其他設備接入時,設備是否啟動熱點。

昨天,突然想到到獲取ios設備ip地址的方法是遍歷ios所有(實體/虛擬)網卡,當熱點啟動的時候,肯定會增加一個新的ip地址。于是通過日志記錄了不啟動熱點和啟動熱點時所有ipv4地址,果然啟動熱點后,會增加一個橋接虛擬網卡,名稱(ifa_name)為“bridge0”或“bridge100”。

以下為熱點啟動后,所有ipv4網卡的情況:

lo0 ? ? ? ? //本地ip, 127.0.0.1
en0 ? ? ? ?//局域網ip, 192.168.1.23
pdp_ip0 ?//WWAN地址,即3G ip,
bridge0 ?//橋接、熱點ip,172.20.10.1

通過遍歷所有ipv4網卡,查詢網卡名稱是否包含“bridge”即可判斷當前熱點是否啟動。

//?Get?All?ipv4?interface +?(NSDictionary?*)getIpAddresses?{NSMutableDictionary*?addresses?=?[[NSMutableDictionary?alloc]?init];struct?ifaddrs?*interfaces?=?NULL;struct?ifaddrs?*temp_addr?=?NULL;@try?{//?retrieve?the?current?interfaces?-?returns?0?on?successNSInteger?success?=?getifaddrs(&interfaces);//NSLog(@"%@,?success=%d",?NSStringFromSelector(_cmd),?success);if?(success?==?0)?{//?Loop?through?linked?list?of?interfacestemp_addr?=?interfaces;while(temp_addr?!=?NULL)?{if(temp_addr->ifa_addr->sa_family?==?AF_INET)?{//?Get?NSString?from?C?StringNSString*?ifaName?=?[NSString?stringWithUTF8String:temp_addr->ifa_name];NSString*?address?=?[NSString?stringWithUTF8String:inet_ntoa(((struct?sockaddr_in?*)?temp_addr->ifa_addr)->sin_addr)];NSString*?mask?=?[NSString?stringWithUTF8String:inet_ntoa(((struct?sockaddr_in?*)?temp_addr->ifa_netmask)->sin_addr)];NSString*?gateway?=?[NSString?stringWithUTF8String:inet_ntoa(((struct?sockaddr_in?*)?temp_addr->ifa_dstaddr)->sin_addr)];AXNetAddress*?netAddress?=?[[AXNetAddress?alloc]?init];netAddress.name?=?ifaName;netAddress.address?=?address;netAddress.netmask?=?mask;netAddress.gateway?=?gateway;NSLog(@"netAddress=%@",?netAddress);addresses[ifaName]?=?netAddress;}temp_addr?=?temp_addr->ifa_next;}}}@catch?(NSException?*exception)?{NSLog(@"%@?Exception:?%@",?DEBUG_FUN,?exception);}@finally?{//?Free?memoryfreeifaddrs(interfaces);}return?addresses; }

轉載于:https://my.oschina.net/u/211651/blog/169439

總結

以上是生活随笔為你收集整理的ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。