1

我想知道 IP 地址是否在本地网络中使用我的 objective-c(Xcode) 程序。但是,问题是对于每个 IP 地址(即使它不在网络中),结果都是成功的。这是代码,请帮助我如何查找 IP 地址是否正确位于本地网络中。

            bool success = false;
            const char *host_name = [@"192.168.0.115" cStringUsingEncoding:NSASCIIStringEncoding];

            SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
                                                                                        host_name);
            SCNetworkReachabilityFlags flags;
            success = SCNetworkReachabilityGetFlags(reachability, &flags);
            bool isAvailable = success && (flags & kSCNetworkFlagsReachable) &&
            !(flags & kSCNetworkFlagsConnectionRequired);
            if (isAvailable)
            {
              //success
              //connect to IP address                      

            }
            else
            {
               //Not success
            }
4

1 回答 1

1

使用此代码

Reachability* reachability = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain]; // does not work with local IP, ARC is not used.
NetworkStatus netStatus = [reachability currentReachabilityStatus];

netStatus会给你状态。

更新

Reachability reachabilityWithHostName:不适用于本地 IP,因为它无法解析地址。因此,此解决方案不能回答问题。但是,正如下面评论中@Kerberos 所引用的,这个启用了 ARC 的库可用于检查与本地 IP 地址的连接。

于 2012-09-24T06:43:35.317 回答