适用于套接字连接的iOS可达性

问题描述:

我需要检查应用程序中套接字连接的可达性。我已经通过苹果的示例代码和几个例子,我可以从SO和其他网站找到,但我运气不好,因为我没有得到任何回应。这是我正在尝试的示例代码。适用于套接字连接的iOS可达性

我的要求只是验证连接到myhost:端口是一个套接字连接。 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]; 
+0

您用于可达性的链接是安全服务器吗?例如:以http://或https://开头? – 2014-09-02 09:32:41

+0

没有它的非安全服务器。除了ip地址不是静态的,没有什么特别的,因此当前的ip可以通过dyndns.org解析。 – nsuinteger 2014-09-02 09:34:53

+0

首先检查Reachability * reachability = [Reachability reachabilityWithHostname:@“www.google.com”]; – 2014-09-02 09:44:53

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