在IOS开发中我们经常用到网络,网络是不可或缺的,有网络连接和没有网络连接的时候进行不同的处理,断点续传等等都离不开网络检测。今天我自己简单的做了一个demo,用一个函数封装网络检测;
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请看第二讲