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 ...