您的位置:首页 > 理论基础 > 计算机网络

IOS--判断当前网络是否可用

2015-10-26 22:52 465 查看
#import <Foundation/Foundation.h>

@interface NetWorkUtils :
NSObject

//网络判断
- (BOOL) connectedToNetwork;

@end

#import "NetWorkUtils.h"

//网络判断

#import <Foundation/Foundation.h>

#import <CommonCrypto/CommonHMAC.h>

#import <SystemConfiguration/SystemConfiguration.h>

#import <netdb.h>

#import <arpa/inet.h>

@implementation NetWorkUtils

//网络判断
-(BOOL) connectedToNetwork
{

// Create zero addy

struct sockaddr_in zeroAddress;

bzero(&zeroAddress,
sizeof(zeroAddress));
zeroAddress.sin_len =
sizeof(zeroAddress);
zeroAddress.sin_family =
AF_INET;

// Recover reachability flags

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\n");

return NO;
}

BOOL isReachable = ((flags &
kSCNetworkFlagsReachable) != 0);

BOOL needsConnection = ((flags &
kSCNetworkFlagsConnectionRequired) != 0);

return (isReachable && !needsConnection) ?
YES : NO;
}

@end

//调用

NetWorkUtils * network=[[NetWorkUtils alloc] init];

if(![network connectedToNetwork]){

UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"网络连接失败,请查看网络是否连接正常!" delegate:self
cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alert show];

return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: