iphone - 如果主机在 2-3 秒内没有响应,则设置超时

标签 iphone objective-c cocoa

我想检查网络主机是否可用,所以我使用了下面的代码,它可以工作,但有时如果网站响应缓慢,它会一直等待,我如何在其中植入超时?如果主机在 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/

相关文章:

ios - 从另一个 subview 内部和下方添加一个 subview

objective-c - 将文本添加到特殊格式的 NSTextField 而不格式化该文本

objective-c - 使用类指针有多安全?

iphone - 使用 cocos2d 在 iPhone 上玩简单的 2D 游戏 - 提示和技巧

iphone - SKPSMTP消息设置WatchdogTimer :]: message sent to deallocated instance

ios - NSString:删除 <b></b> 并为该段制作一个带有颜色的属性字符串?

objective-c - 等效键删除在 cocoa 应用程序中不起作用

cocoa - UILabel子类

iphone - 发布在 friend 墙上,graph api IOS

iphone - 当两个线程写入同一个对象时会发生什么?