我需要检查应用程序中套接字连接的可达性。我已经浏览了苹果的示例代码以及我可以从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];
答案 0 :(得分:0)
在几次尝试使用可达性类进行干预之后,我放弃并使用了根据需要创建的临时异步套接字连接来验证连接。它按预期工作,并建立在gcd之上。另外我发现Robbie Hanson(https://github.com/robbiehanson/CocoaAsyncSocket)的AsyncSocket在实现我的要求时非常有帮助。