我想检查网络主机是否可用,所以我使用了下面的代码,它可以工作,但有时如果网站响应缓慢,它会一直等待,我如何在其中植入超时?如果主机在 2-3 秒内没有响应,也返回 false。请帮帮我
- (BOOL)isDataSourceAvailable {
static BOOL checkNetwork = YES;
static BOOL _isDataSourceAvailable = NO;
if (checkNetwork) { // Since checking the reachability of a host can be expensive, cache the result and perform the reachability check once.
checkNetwork = NO;
Boolean success;
const char *host_name = "google.com"; //HOST
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
_isDataSourceAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
CFRelease(reachability);
}
return _isDataSourceAvailable;
}
最佳答案
很简单
只需实现NSTimer
示例
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:NO];
如果 targetMethod: 被调用,则超时。
这里别忘了打电话
[myTimer invalidate];
myTimer = nil;
如果您收到服务器的响应。
希望这对您有帮助。
关于iphone - 如果主机在 2-3 秒内没有响应,则设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324640/