現在、通信している特定のサーバーに基づいて webview を開こうとする ap があります。
ただし、iphone/ipad とサーバー (または他のデバイス) の両方が同じネットワーク上にない場合に備えて、ユーザーが独自のサーバー IP を入力できるようにします。ただし、NSURLConnection を使用して、指定された IP との接続を開くことができるかどうかを検出しようとしていますが、サーバー アドレス (またはランダムな Web アドレスでさえ) が完全に偽物であっても、NSURLConnection はエラーを返しません。
.h
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate, UITableViewDataSource, UITableViewDelegate,UIWebViewDelegate, NSURLConnectionDataDelegate> {
.m 内の関連コード
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath
{
dev_ip = @"http://www.asdfasfdfa.com/";
//dev_ip = (random ip)
NSMutableURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:dev_ip]];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (conn) {
NSLog(@"Connection established");
}
else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"No Device at designated IP"]
delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
}
}
この if/else は常に「接続が確立されました」を出力します。これは NSURLConnection を使用してはならないものですか? もしそうなら、接続のために特定のIPでデバイスを検出するために何を使用できますか? ユーザーが不正な IP に接続しようとするのを阻止する必要があるので、最善の方法は何ですか?