在IOS開發中我們經常用到網路,網路是不可或缺的,有網路連接和沒有網路連接的時候進行不同的處理,斷點續傳等等都離不開網路檢測。今天我自己簡單的做了一個demo,用一個函數封裝網路檢測;
-(BOOL)netWorkIsExistence{
struct sockaddr_in initAddress; //sockaddr_in是與sockaddr等價的資料結構
bzero(&initAddress, sizeof(initAddress));
initAddress.sin_len = sizeof(initAddress);
initAddress.sin_family = AF_INET; //sin_family是地址家族,一般都是“AF_xxx”的形式。通常大多用的是都是AF_INET,代表TCP/IP協議族
SCNetworkReachabilityRef readRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&initAddress); //建立測試連接的引用:
SCNetworkReachabilityFlags flags;
BOOL getRetrieveFlags = SCNetworkReachabilityGetFlags(readRouteReachability, &flags);
CFRelease(readRouteReachability);
if (!getRetrieveFlags) {
return NO;
}
BOOL flagsReachable = ((flags & kSCNetworkFlagsReachable) != 0);
BOOL connectionRequired = ((flags & kSCNetworkFlagsConnectionRequired) != 0);
return (flagsReachable && !connectionRequired) ? YES : NO;
}
上面的內容是否有些不理解,如果你沒有接觸過socket編程和SCNetworkReachability請看第二講