我正在关注How to check for an active Internet connection on iOS or OSX?和http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html来测试连接性,但我遇到了一些非常基本的问题。
例如,我正在运行另一台机器的.NET API,然后尝试通过我的mac mini连接到它。
1)当IIS运行时,一切都正常运行,我很高兴能让它工作!
2)我可以完全关闭IIS(很明显,主机无法访问),但我的reachabilityWithHostName仍然报告主机可以访问。
有什么想法吗?
答案 0 :(得分:4)
请参阅SCNetworkReachability Reference。
SCNetworkReachability编程 接口允许应用程序 确定系统的状态 当前的网络配置和 目标主机的可达性。 :一种 远程主机被认为是可达的 当一个数据包,由一个 应用程序进入网络堆栈, 可以离开本地设备。 可达性并不能保证 数据包实际上是 由主持人收到。
打开和关闭IIS只会阻止您的服务器接收来自ftp / http的Web请求,并且不会阻止设备成功发送数据包。
答案 1 :(得分:4)
前段时间我用这个答案解决了我的问题。我找到了一个更好的解决方案,我在这里发布给其他可能觉得有用的人。
Apple提供了一个很好的示例代码。
下载示例代码here
在项目中包含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");
}
}