可达性检测净状态,我想删除该地址

时间:2013-01-14 02:34:29

标签: ios reachability

如果google.com不起作用!但网是好的。代码会带来错误。所以我想删除“google.com”以检测网络的状态。

我无法找到没有地址的可达性方法。

#import "Reachability.h"

static  ReachabilityCenter *reachCenter;
@implementation ReachabilityCenter

@synthesize reachablity;
@synthesize isConnectedNet;

+(id)shareCenter
{
    if(!reachCenter)
    {
         reachCenter = [[ReachabilityCenter alloc] init];
         reachCenter.reachablity = [Reachability reachabilityWithHostname:@"www.google.com"];
    }
    return reachCenter;
}

-(void)reachabilityChanged:(NSNotification*)note
{
    Reachability * reach = [note object];
    isConnectedNet = [reach isReachable];
}

-(void)beginListening
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(reachabilityChanged:)
                                                 name:kReachabilityChangedNotification
                                               object:nil];

    [reachCenter.reachablity  startNotifier];

}
@end

我测试代码检测没有网站的状态,ip。

-(void)detectNetStatus
{
    Reachability *r =  [Reachability reachabilityForLocalWiFi];
    isConnectedNet = [r currentReachabilityStatus];
}

-(NetworkStatus)isConnectedNet
{
    [self detectNetStatus];
    return isConnectedNet;
}

1 个答案:

答案 0 :(得分:0)

您所询问的实际上是不可能的,原因如下:您无法使用它来验证网络连接是否“确定”(以您希望的方式)。为了使用它,你必须使用它来表示与预期资源X,Y或Z的连接。

例如,请考虑以下问题:如果您连接到没有外部Internet访问权限的本地网络,该怎么办?它看起来像一个连接可用,事实上确实如此 - 它不是你想到的。

因此,您必须针对X,Y或Z进行测试,以验证您要访问的内容是否可用。

添加信息:

您可以确定网络连接是否可用:

寻找:可达性* internetReach;

在Apple的例子中:http://developer.apple.com/library/ios/#samplecode/Reachability/Listings/Classes_ReachabilityAppDelegate_h.html#//apple_ref/doc/uid/DTS40007324-Classes_ReachabilityAppDelegate_h-DontLinkElementID_3

问题是---只是因为网络连接可用,并且上面的InternetReach将会---它没有告诉你关于连接的任何信息。它可能只是一个本地网络。在尝试连接您希望可用的特定内容之前,您无法找到,例如Apple.com或Google.com