套接字连接的iOS可达性

时间:2014-09-02 09:22:25

标签: ios objective-c sockets reachability

我需要检查应用程序中套接字连接的可达性。我已经浏览了苹果的示例代码以及我可以从SO和其他网站找到的一些示例,但我运气不好,因为我没有得到任何回复。这是我正在尝试的示例代码。

我的要求只是验证与myhost:port的连接,这是一个套接字连接。 myhost是来自dyndns.org的地址

struct sockaddr_in server_address;
    server_address.sin_len = sizeof(server_address);
    server_address.sin_family = AF_INET;
    server_address.sin_port = htons(1234);
    server_address.sin_addr.s_addr = inet_addr("host-from-dyndns.org");

    Reachability *reachability = [Reachability reachabilityWithAddress:&server_address];

    __weak Reachability *weakReachability = reachability;
    reachability.reachableBlock = ^(Reachability*reach)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"REACHABLE!");
        });
        [weakReachability stopNotifier];
    };

    reachability.unreachableBlock = ^(Reachability*reach)
    {
        NSLog(@"UNREACHABLE!");
        [weakReachability stopNotifier];
    };

    [reachability startNotifier];

1 个答案:

答案 0 :(得分:0)

在几次尝试使用可达性类进行干预之后,我放弃并使用了根据需要创建的临时异步套接字连接来验证连接。它按预期工作,并建立在gcd之上。另外我发现Robbie Hanson(https://github.com/robbiehanson/CocoaAsyncSocket)的AsyncSocket在实现我的要求时非常有帮助。