2014-09-02 45 views
0

我需要檢查應用程序中套接字連接的可達性。我已經通過蘋果的示例代碼和幾個例子,我可以從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

回答

0

經過幾次失敗與可達性類的干預嘗試一個地址,我放棄了,使用按需創建驗證連接一個臨時的異步套接字連接。它按預期工作,並建立在gcd之上。另外,我發現Robbie Hanson的AsyncSocket(https://github.com/robbiehanson/CocoaAsyncSocket)在實現我的要求時非常有幫助。