Apple の SimplePing を使用して、iPhone 上のホストに ping を実行しています。次のデリゲート メソッドが機能することを期待しています。
(1) - (void)simplePing:(SimplePing *)pinger didSendPacket:(NSData *)packet;
(2) - (void)simplePing:(SimplePing *)pinger didReceivePingResponsePacket:(NSData *)packet;
(3) - (void)simplePing:(SimplePing *)pinger didReceiveUnexpectedPacket:(NSData *)packet;
(4) - (void)simplePing:(SimplePing *)pinger didFailToSendPacket:(NSData *)packet error:(NSError *)error;
結果は...
- シミュレータ: メソッド (1) & (2 または 3 または 4) が呼び出されます (正しい)
- デバイス(WiFi を使用): メソッド (1) & (2 または 3 または 4) が呼び出されます (正解)
- デバイス(3G を使用): メソッド (1) のみが呼び出されます。(不正解です。(2 または 3 または 4) も calleA を取得することを期待しています)
AppStore で入手できるいくつかのアプリ ( Network Ping Lite、Free Ping、Ping Free ) を試してみました。彼らの結果は私のものと似ています。
これが Apple による SimplePing サンプル コードのバグなのか、それとも他に必要な設定があるのか知りたいですか?
以下は私が使用したコードです
- (void)viewDidLoad {
[super viewDidLoad];
self.simplePing = [SimplePing simplePingWithHostName:@"www.google.com"];
[self.simplePing setDelegate:self];
[self.simplePing start];
}
- (void)simplePing:(SimplePing *)pinger didStartWithAddress:(NSData *)address {
[self.simplePing sendPingWithData:nil];
}