簡體   English   中英

如何使用 iPhone 中的可達性代碼找到可以訪問的服務器?

[英]How to find server is reachable with Reachability code in iPhone?


我有客戶端服務器說“http://abc.com”,我想檢查該服務器是否響應。
如何使用蘋果的可達性代碼檢查這一點?
正如我看到的代碼,但無法獲得在哪里寫我的客戶的 url 來檢查這個。
請給我建議。

這是一個同步示例。 您可能希望異步執行此操作,但這會讓您快速檢查。

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:// 前綴等。

為了通過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 ”是包含主機名的常量,每當 iphone 客戶端上的可達性發生變化時,可達性 class 將發布通知“ kReachabilityChangedNotification ”,同時您必須執行所有可達性檢查並更新您的可達性狀態。

如果你需要這個例子,我是如何在我的應用程序中使用的,然后讓我知道我會提供代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM