需要 https 或 *** (ios) 的可达性类和主机名
Posted
技术标签:
【中文标题】需要 https 或 *** (ios) 的可达性类和主机名【英文标题】:Reachability class and hostnames that require https or *** (ios) 【发布时间】:2013-06-07 06:12:46 【问题描述】:我已经成功实现了 Reachability 类。但是,在我的应用程序中,我想在无法连接到我们的服务器时通知用户(但常规互联网正在运行)。
Reachability 报告 iPhone 可以成功访问主机名,但我认为它可能会返回错误 b/c 我不在经过身份验证的网络上:
我使用的主机名是“foreverfreebank.com”。同样,Reachability 的主机名检查报告成功。
然而,
--通过网络访问本站,需要在浏览器中使用https,即'https://foreverfreebank.com'
可达性是否考虑了这种情况?还是协议部分('https')不重要?
如果您在 Firefox 浏览器中输入“http://foreverfreebank.com”(省略“s”),我会感到困惑。也就是说,http:// 不应该是可访问的。
同样,我有另一个需要 *** 访问才能访问该站点的站点:http://checksforever.com。当我尝试使用主机名:“checksforever.com”时,即使我不在 *** 上,Reachability 也会报告成功。
这是预期的行为吗?谢谢
【问题讨论】:
【参考方案1】:您需要检查特定端口(在本例中为 443)的可达性。这是 Reachability API 不支持的。请参阅this question 或this。
文档中的相关部分:
当一个数据包由一个远程主机发送时,远程主机被认为是可达的。 应用程序进入网络堆栈,可以离开本地设备。 可达性并不能保证数据包实际上是 主机收到。
所以,基本上 Reachability 不会测试远程主机是否接受传入连接。为此,我怀疑您需要打开 URL 连接并等待超时/其他错误。
【讨论】:
感谢这些链接。我不知道需要做出明确的区分。可达性意味着 iPhone 可以发送数据包,但它没有说明主机是否可以回复(也称为 ping 功能)。那么远程主机功能与检查一般互联网连接的意义何在? Reachability 比简单检查 WiFi/3G 是否连接更进一步。 (现在我想起来了,这是检查 WiFi 连接的唯一方法,不是吗?)。或许developer.apple.com/library/mac/#samplecode/SimplePing/… 可以帮到你。以上是关于需要 https 或 *** (ios) 的可达性类和主机名的主要内容,如果未能解决你的问题,请参考以下文章