ios無線網路
一直在做移動裝置網路方面的開發,最近專案需要解決ios裝置判斷是否開啟個人熱點。
http://www.cnblogs.com/gaoxiaoniu/p/5482623.html
經過網上搜尋,找到一個比較笨的辦法,就是通過獲取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 success
NSInteger success = getifaddrs(&interfaces);
//NSLog(@"%@, success=%d", NSStringFromSelector(_cmd), success);
if (success == 0) {
// Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL) {
if(temp_addr->ifa_addr->sa_family == AF_INET) {
// Get NSString from C String
NSString* 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 memory
freeifaddrs(interfaces);
}
return addresses
相關文章
- 使用iwctl連線無線網路
- win10無線網路連線步驟_win10怎麼連線無線網路Win10
- 掃描所有無線網路
- 企業無線覆蓋,企業無線網路,辦公無線區域網方案
- 連線上網路無法上網
- AirRadar for Mac(無線網路軟體)AIMac
- 部署無線網狀網路的挑戰
- 華為無線網路:全球43%的人口還未接入網際網路 讓無線訊號連線每個角落
- 無線網際網路協議802.11學習協議
- 學校無線網路覆蓋方案
- WiFi Explorer Pro for Mac(無線網路管理)WiFiMac
- win10怎麼開啟無線網路連線 win10系統開啟無線網路連線的教程Win10
- 無線網路wifi和wlan有什麼區別?無線網路wifi和wlan的區別詳解WiFi
- win10找回無線網路密碼的方法_win10如何檢視無線網路密碼Win10密碼
- 網際網路公司無線覆蓋解決方案
- 如何在Mac上忘記無線網路Mac
- iOS12 beta5下載提示需要接入無線區域網路的解決方法iOS
- 網際網路公司無線認證平臺好嗎
- 網際網路公司無線接入平臺怎麼樣
- Win10系統無線網路被限制如何解決_win10無線網路受限怎麼處理Win10
- Win10系統怎麼修改無線網路密碼_win10修改無線網路密碼的方法Win10密碼
- 無線網路安全防護建議詳解!
- 無線網路攻擊有哪些?如何防護?
- 如何讓你的無線網路速度飛快
- Mac上如何忘記特定的無線網路?Mac
- 【計算機網路】資料鏈路層——無線區域網與VLAN計算機網路
- 《802.11無線網路權威指南-網路概論》-- 讀書筆記2筆記
- 網際網路公司無線認證平臺哪裡有
- 樂維網管平臺(三)如何高效管理無線網路
- iOS開發學習路線iOS
- 無線網路安全————2、無線路由器配置和選擇測試環境路由器
- VirtualBox 本地網路連線無線狀態下連線虛擬機器虛擬機
- 學校有線與無線一體化網路解決方案
- iOS 網路最佳化:iOS 14 網路層效能和安全性iOS
- win10系統下無線網路如何禁用Win10
- 無線網路安全——1、WiFi安全基礎知識WiFi
- WiFi Explorer Pro for MacWiFi無線網路管理工具WiFiMac
- Win10系統連線網路時提示無法連線到此網路錯誤如何解決Win10
- iOS-TCP網路框架iOSTCP框架