如何在iPhone中使用Reachability代码查找服务器?

时间:2011-04-28 13:07:04

标签: iphone reachability


我有客户端服务器说“http://abc.com”,我想检查此服务器是否响应 如何使用Apple的可达性代码进行检查? 当我看到该代码但无法在哪里写我的客户端的URL来检查这个。
请建议我。

2 个答案:

答案 0 :(得分: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://前缀等。

答案 1 :(得分:0)

为了通过Apple(可达性)代码检查服务器的可达性,您需要查看它的实用方法,如下所示;

+ (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 '是常量包含主机名,每当iphone-client上的可达性发生变化时,可达性类将发布通知' kReachabilityChangedNotification '执行所有可达性检查并更新您的可访问性状态。

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