Ios AFNetworkReachabilityManager在不可访问时返回可访问

Ios AFNetworkReachabilityManager在不可访问时返回可访问,ios,swift,afnetworking,afnetworking-2,Ios,Swift,Afnetworking,Afnetworking 2,在iOS应用程序中,我希望监视网络中多个IP地址的可达性 我想创建多个AFNetworkReachabilityManager对象来监视这些IP 因此,我按照以下方式创建管理器: var server_address = sockaddr_in( sin_len: __uint8_t(sizeof(sockaddr_in)), sin_family: sa_family_t(AF_INET), sin_port: in_port_t(80), sin_addr:

在iOS应用程序中,我希望监视网络中多个IP地址的可达性

我想创建多个
AFNetworkReachabilityManager
对象来监视这些IP

因此,我按照以下方式创建管理器:

var server_address = sockaddr_in(
    sin_len: __uint8_t(sizeof(sockaddr_in)),
    sin_family: sa_family_t(AF_INET),
    sin_port: in_port_t(80),
    sin_addr: in_addr(s_addr: inet_addr("10.0.0.60")),
    sin_zero: (0, 0, 0, 0, 0, 0, 0, 0)
);

item.reachabilityManager = AFNetworkReachabilityManager(forAddress: &server_address);
对象有一个属性
可访问性管理器
,该属性存储管理器,并且不超出范围

初始化管理器后,我通过以下方式为管理器设置
可达性状态更改块
,同时启动管理器的监视

item.reachabilityManager!.setReachabilityStatusChangeBlock({ (status) -> Void in

switch(status) {
    case AFNetworkReachabilityStatus.NotReachable, AFNetworkReachabilityStatus.Unknown:
        NSLog("UNREACHABLE: \(item.name)");
    case AFNetworkReachabilityStatus.ReachableViaWiFi, AFNetworkReachabilityStatus.ReachableViaWWAN:
        NSLog("REACHABLE \(item.name)");
}

});

item.reachabilityManager!.startMonitoring();
如果我在
开始监视()
之后立即执行
可访问的
,它将返回false,,这是我期望的

之后,我的
reachabilityStatusChangeBlock
被触发,它告诉我我正在监视的IP是可访问的,而我确信它是不可访问的(我目前甚至不在相同的IP范围内,对该IP的ping当然表明另一端没有应答)

如果我用未知域名实例化
AFNetworkReachabilityManager
,它将正确返回状态。所以我知道经理工作正常

我可以想象,造成这种情况的原因之一是我创建的用于使用管理器的
sockaddr\u变量,也许我在某个地方弄乱了构造函数中的一个参数