2011-04-28 68 views

回答

9

这是一个同步的例子。您可能想要异步执行此操作,但这会让您完成快速检查。

Reachability *netReach = [Reachability reachabilityWithHostName:@"host.name"]; 
//return [netReach currentReachabilityStatus]; 
NetworkStatus netStatus = [netReach currentReachabilityStatus]; 
if (netStatus==ReachableViaWiFi) { 
    [ViewManager showStatus:@"Reachable (WiFi)!"]; 
} else if(netStatus==ReachableViaWWAN) { 
    [ViewManager showStatus:@"Reachable (WWAN)!"]; 
} else { 
    [ViewManager showStatus:@"Not reachable, aww :-("]; 
} 

当使用reachabilityWithHostName你一定要记住,这仅仅是主机名,应该是没有的http://前缀等。

+0

主机名只表示abc.com,我说得对吗? – dks1725 2011-04-28 13:23:00

+0

是的,这是正确的。 – 2011-04-28 13:26:07

+0

好的,谢谢,我得到了 – dks1725 2011-04-28 13:28:08

0

为了通过Apple(Reachability)代码检查服务器的可达性,您必须查看下面的实用方法;

+ (Reachability*) reachabilityWithHostName: (NSString*) hostName; 

但在我看来,我会首先检查的其他因素组合的可达性(检查互联网连接3G/EDGE/WIFI和然后验证所需的主机可达)相同的实例中。只是在我的场景中更新可达性方法内部的安全检查之一。

else if (((netStatus == ReachableViaWiFi) || (netStatus == ReachableViaWWAN)) && connectionRequired == YES) 
{ 
     isInternetConAvailable = ([[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:kReachibility_ping_uri] 
                  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0] delegate:self]) ? YES : NO; 
} 

在哪里“kReachibility_ping_uri”是常量包含主机名,可达性类将张贴通知“kReachabilityChangedNotification”每当可达性变化iphone客户端上你都执行所有同一时间可达性检查并更新您的可达性状态。

如果您需要示例,我如何在我的应用程序中使用,然后让我知道我将提供代码。

相关问题