【发布时间】:2011-03-01 12:31:17
【问题描述】:
我的 iPhone 应用程序包含几个对服务器的 http 请求。用户可以输入服务器的 IP 地址,这样您就可以将应用程序与您自己的私有服务器结合使用。
在发出请求之前,我总是检查输入的 IP 地址是否有效,我会这样做:
-(BOOL)urlExists {
NSString *url = [NSString stringWithFormat:@"%@", ipAddress];
NSURLRequest *myRequest1 = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
NSHTTPURLResponse* response = nil;
NSError* error = nil;
[NSURLConnection sendSynchronousRequest:myRequest1 returningResponse:&response error:&error];
if ([response statusCode] == 404){
return NO;
}
else{
return YES;
}
[url release];
[response release];
[error release];
[myRequest1 release];
}
只要输入的地址看起来像这样:xx.xx.xxx.xxx 就可以完美运行 但是,如果您尝试输入类似“1234”或“test”的内容,上面显示的代码将不起作用。所以我必须以某种方式检查输入的地址是否“看起来”像一个 IP 地址,我不知道该怎么做。
非常感谢任何建议!
【问题讨论】:
-
"1234" 无效,因为它与 "0.0.4.210" 相同,但保留了 "0.0.0/8"。最低有效地址(十进制表示法)是 16777217。但“点分十进制”并不是 IPv4 地址的唯一有效表示。
标签: iphone objective-c ip-address nsurlrequest