// // Util.m // Miaxis // // Created by tongjun on 14-3-5. // Copyright (c) 2014年 tongjun. All rights reserved. // #import "Util.h" //#import //#import #import @implementation Util //判断网络是否连接 //- (BOOL) connectedToNetWork //{ // @try { // //创建零地址,0.0.0.0的地址表示查询本机的网络连接状态 // struct sockaddr_in zeroAddress; // bzero(&zeroAddress, sizeof(zeroAddress)); // zeroAddress.sin_len = sizeof(zeroAddress); // zeroAddress.sin_family = AF_INET; // // /** // * SCNetworkReachabilityRef: 用来保存创建测试连接返回的引用 // * // * SCNetworkReachabilityCreateWithAddress: 根据传入的地址测试连接. // * 第一个参数可以为NULL或kCFAllocatorDefault // * 第二个参数为需要测试连接的IP地址,当为0.0.0.0时则可以查询本机的网络连接状态 // * 同时返回一个引用必须在用完后释放 // * PS: SCNetworkReachabilityCreateWithName: 这是个根据传入的网络测试连接, // * 第二个参数比如为“www.apple.com”,其他和上一个一样 // * // * SCNetworkReachabilityGetFlags:这个函数用来获得测试连接的状态, // * 第一个参数为之前建立的测试连接的引用, // * 第二个参数用来保存获得的状态, // * 如果能获得状态则返回TRUE,否则返回FALSE。 // * // */ // // SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); // SCNetworkReachabilityFlags flags; // // BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); // CFRelease(defaultRouteReachability); // // if (!didRetrieveFlags) { // printf("Error. Could not recover network reachability flags"); // return NO; // } // // /** // * kSCNetworkReachabilityFlagsReachable: 能够连接网络 // * kSCNetworkReachabilityFlagsConnectionRequired: 能够连接网络,但是首先得建立连接过程 // * kSCNetworkReachabilityFlagsIsWWAN: 判断是否通过蜂窝网覆盖的连接, // * 比如EDGE,GPRS或者目前的3G.主要是区别通过WiFi的连接 // */ // BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0); // BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0); // // return (isReachable && !needsConnection) ? YES : NO; // } // @catch (NSException *exception) { // return NO; // } //} + (BOOL) connectedToNetWork{ [GLobalRealReachability startNotifier]; ReachabilityStatus status = [GLobalRealReachability currentReachabilityStatus]; [GLobalRealReachability stopNotifier]; return status ? YES : NO; } @end