iOS网络可达性 – 似乎不起作用

我正在关注如何检查iOS或OSX上的活动Internet连接? 和http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html测试连接性,但遇到了一些非常基本的问题。

例如,我正在从另一台机器上运行.NET API,然后尝试通过我的mac mini连接到它。

1)当IIS运行时,一切都正常运行,我很高兴我得到了这个工作!

2)我可以完全关闭IIS(很明显,主机无法访问),但我的reachabilityWithHostName仍然报告主机可以访问。

有任何想法吗?

请参阅SCNetworkReachability Reference 。

SCNetworkReachability编程接口允许应用程序确定系统当前网络配置的状态以及目标主机的可访问性。 当应用程序发送到网络堆栈的数据包可以离开本地设备时,远程主机被认为是可达的。 可达性不保证主机实际接收数据包。

打开和关闭IIS只会阻止您的服务器接收诸如ftp / http之类的Web请求,并且不会阻止设备成功发送数据包。

前段时间我用这个答案来解决我的问题。 我找到了一个更好的解决方案,我在这里发布给其他可能觉得有用的人。

Apple提供了一个很好的示例代码。

在此处下载示例代码

在项目中包含Reachability.h和Reachability.m文件。 看看ReachabilityAppDelegate.m,看看如何通过WiFi,WWAN等确定主机可达性,可达性的示例。对于网络可达性的非常简单的检查,你可以做这样的事情

Reachability *networkReachability = [Reachability reachabilityForInternetConnection]; NetworkStatus networkStatus = [networkReachability currentReachabilityStatus]; if (networkStatus == NotReachable) { NSLog(@"There IS NO internet connection"); } else { NSLog(@"There IS internet connection"); } }