我看过苹果的Reachability样本和“Iphone开发者的烹饪书”中的另一个样本
以下是测试ip / port reachability的步骤
我发现无论我测试的有效(有效范围)ip /端口是什么,我的代码都说它可以访问,即使我在ping或telnet测试时实际上无法访问它们。
(我看过其他SO帖子,其中对特定ip的可达性测试总是成功)
Reachability reachabilityWithAddress does not work
是SCNetworkReachability ..调用只检查参数的有效性(ip地址或主机名)?即,他们实际上是否将数据包(或连接)发送到给定地址以测试可达性?
我可以自己实现异步连接和超时,但是苹果评论员不应该拒绝多长时间这是微妙的事情。(我担心如果需要太长时间,苹果评论家可能认为我的应用程序没有处理网络可达性)
谢谢
答案 0 :(得分:2)
根据上述评论回答您的问题,根据SCNetworkReachability Reference
远程主机被视为可访问 当一个数据包,由一个 应用程序进入网络堆栈, 可以离开本地设备。 可达性并不能保证 数据包实际上是 收到主持人的回复。
这将无法检查服务器的状态,只是确保它可以获取数据包。
如果存在任何与网络相关的问题,Apple希望您的应用程序优雅地失败,检查是否可以使用Reachability进行互联网是第一步。如果Reachability失败,您可以假设您无法使用服务器并立即提醒用户。接下来的步骤是正确处理服务器返回的错误,例如400错误请求,找不到404文件,设置合理的超时,以及在长时间下载期间不阻止UI,同时显示某种状态指示符。