Reachability判斷的不準確 檢測網路

2021-07-23 16:33:10 字數 1341 閱讀 1690

nsstring  * strnetworktype =@"";

//建立零位址,0.0.0.0的位址表示查詢本機的網路連線狀態

struct

sockaddr_storage zeroaddress;

bzero(&zeroaddress, sizeof(zeroaddress));

zeroaddress.ss_len = sizeof(zeroaddress);

zeroaddress.ss_family = af_inet;

// recover reachability flags

scnetworkreachabilityref defaultroutereachability = scnetworkreachabilitycreatewithaddress(null, (struct

sockaddr *)&zeroaddress);

scnetworkreachabilityflagsflags;

//獲得連線的標誌

bool didretrieveflags = scnetworkreachabilitygetflags(defaultroutereachability, &flags);

cfrelease(defaultroutereachability);

//如果不能獲取連線標誌,則不能連線網路,直接返回

if (!didretrieveflags)

if((flags & kscnetworkreachabilityflagsconnectionrequired) == 0)

if (

((flags & kscnetworkreachabilityflagsconnectionondemand) !=

0) ||

(flags & kscnetworkreachabilityflagsconnectionontraffic) != 0

)}if((flags & kscnetworkreachabilityflagsiswwan) == kscnetworkreachabilityflagsiswwan)

else

if ([currentradioaccesstechnology isequaltostring:ctradioaccesstechnologyedge] || [currentradioaccesstechnology isequaltostring:ctradioaccesstechnologygprs])

else }

}else

else }

}}}[

self

judgeinternetworking:strnetworktype]; //根據字串判斷屬於哪種網路

Reachability判斷網路連線

reachability是蘋果官方給的檢查網路狀態的庫,想必每個基於網路的應用都會用它來檢查網路狀態吧,當然筆者也不例外.可是正當自信滿滿的我,用這個庫用的不亦樂乎的時候,突然發現我寫的基於網路的程式工作的不是那麼流暢了,尤其是仔細檢查以後確定是因為用了reachability的時候,一下子覺得的不...

官方Reachability說明

1.示例說明 此示例用於演示關於如何使用systemconfiguratio reachalility程式介面來判定相關的網路連線狀態及狀態變化,所以在使用此示例中的reachability.h m 檔案於自有的專案中的前提是必須引入systemconfiguration.framework。2.首...

用Reachability實時監聽網路的變化

在 didfinishlaunchingwithoptions中增加如下 使用通知中心監聽kreachabilitychangednotification通知 nsnotificationcenter defaultcenter addobserver self selector selector ...