6


クライアントサーバーに「http://abc.com」と言ってもらい、このサーバーが応答するかどうかを確認したいと思います。
アップルの到達可能性コードでこれを確認するにはどうすればよいですか?
私はそのコードを見ましたが、これをチェックするためにクライアントのURLをどこに書くべきかを知ることができませんでした。
私に提案してください。

4

2 に答える 2

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:// プレフィックスなどは使用しないでください。

于 2011-04-28T13:18:43.373 に答える
0

Apple(Reachability)コードを介してサーバーの到達可能性を確認するには、以下のようにサーバーのユーティリティメソッドを確認する必要があります。

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

しかし、私の意見では、同じインスタンス内で他の要素の組み合わせの到達可能性を最初にチェックします(インターネット接続3G / Edge / Wifiをチェックしてから、目的のホスト到達可能性を確認します)。私のシナリオでは、更新到達可能性メソッド内の安全なチェックの1つにすぎません。

 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 'を通知します。

例が必要な場合は、アプリでどのように使用したかを教えてください。コードを提供します。

于 2011-04-28T13:45:42.380 に答える