我查看了其他相关问题,但没有一个给我正确的方法。
我需要检查我的应用程序中的主机可用性。我正在使用可达性 API 进行主机检测。 我按照下面写的方式使用它
self.hostReach = [Reachability reachabilityWithHostName:@"https://10.98.241.22:8080/arsys"];
[self.hostReach startNotifier];
即使主机可用,它也会在以下代码中将连接状态显示为“无法访问”
NetworkStatus netStatus = [self.hostReach currentReachabilityStatus];
请帮助我,让我知道我做错了什么。
对于这种类型的主机 URL,我是否需要使用 reachabilityWithAddress
?如果是,请建议我使用此 API 的示例。
谢谢大家!!
最佳答案
主机名基本上意味着域名,而不是协议(protocol)(http/https)和IP地址。
如果您想使用 IP 地址,请尝试 -reachabilityWithAddress:
。它应该看起来像这样:
struct sockaddr_in address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htons(8080);
address.sin_addr.s_addr = inet_addr("10.98.241.22");
Reachability *addressReach = [Reachability reachabilityWithAddress:&address];
别忘了#include <arpa/inet.h>
编辑 – 4 年后
解决这个问题的现代且正确的方法是使用类似 AFNetworkReachabilityManager 的东西。它还允许检查可用的互联网连接类型。
关于iphone - 如何检查主机的网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6292615/