适用于套接字连接的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];
答
经过几次失败与可达性类的干预尝试一个地址,我放弃了,使用按需创建验证连接一个临时的异步套接字连接。它按预期工作,并建立在gcd之上。另外,我发现Robbie Hanson的AsyncSocket(https://github.com/robbiehanson/CocoaAsyncSocket)在实现我的要求时非常有帮助。
您用于可达性的链接是安全服务器吗?例如:以http://或https://开头? – 2014-09-02 09:32:41
没有它的非安全服务器。除了ip地址不是静态的,没有什么特别的,因此当前的ip可以通过dyndns.org解析。 – nsuinteger 2014-09-02 09:34:53
首先检查Reachability * reachability = [Reachability reachabilityWithHostname:@“www.google.com”]; – 2014-09-02 09:44:53