iphone - 如何检查主机的网络服务

标签 iphone objective-c

我查看了其他相关问题,但没有一个给我正确的方法。

我需要检查我的应用程序中的主机可用性。我正在使用可达性 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/

相关文章:

ios - Objective-C block 参数问题 : This block declaration is not a prototype

ios - 在 Xcode 7 中为所有 iPhone 设备准确设置 Assets

iphone - 自定义事件循环和 UIKit 控件。苹果的事件循环有什么额外的魔力?

iphone - 苹果开发者发行证书

objective-c - UITableViewCell 防止删除

ios - AFNetworking-2 waitUntilFinished 不工作

objective-c - Log4xx 作为 Cocoa 框架?

ios - iPhone 屏幕方向在 cordova 3.5.0 中没有改变

iphone - 唯一识别设备

iphone - release 和 release 然后设置为 nil 的区别