ios - 如何知道IP地址是否在本地网络中,xcode

标签 ios ip-address ping

我想使用我的 objective-c(Xcode) 程序知道 IP 地址是否在本地网络中。但是,问题是对于每个 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
            }

最佳答案

使用此代码

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-enabled library可用于检查与本地 IP 地址的连接。

关于ios - 如何知道IP地址是否在本地网络中,xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12559767/

相关文章:

ruby-on-rails - 在 Rails 4 中,如何为 RemoteIp 配置可信代理列表?

c - 从 sockaddr_storage 中提取 IP 地址和端口信息

ubuntu - 无法从代理服务器后面的 Ubuntu 终端 ping google.com

objective-c - 我的更新语句不起作用

ios - 静音本地通知 IOS

networking - 计算机的IP地址

c# - Ping.SendAsyncCancel 挂起任务

android - 无法与同一网络上的 Android 设备 ping/通信

ios - Swift 中基于设备语言的条件代码

ios - 无法看到数组中前 3 个 View Controller 的 .transitionFlipFromRight 动画