1

我现在有一个非常奇怪的案例,我正在开发一个应用程序。我正在测试它的 Wi-Fi 网络没有启用互联网,但它仍然显示我在使用Reachability. 如何检查这种情况,以便告诉用户没有可用的连接?

4

2 回答 2

1

You need to use reachabilityWithHostName (I presume you are using reachabilityForInternetConnection or reachabilityForLocalWiFi) to check if you can reach a particular external hostname.

For example, this code will return YES if there is no internet connection:

Reachability *reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
if ([reachability currentReachabilityStatus] == NotReachable)
     return YES;
于 2012-11-03T17:22:08.773 回答
0

定义“连接”,有几层连接是通过 Wi-Fi 获得正常互联网服务的关键:

  • 第 1 层(物理链路)是否在范围内?
  • 第 2 层 (MAC) 大部分见上文,但 MAC 地址冲突可能会导致问题
  • 第 3 层 (IP) 我们是否从 DHCP/BOOTP 或静态配置中获得了 IP 地址?
  • 第 3 层 (GW) 我们可以到达网关吗?
  • 第 3 层 (ROUTE) 我们可以到达下一跳路由器吗?
  • 第 7 层 (DNS) 我们可以访问 DNS 服务器吗?我们是被欺骗还是被迷住了?

一旦所有这些工作正常,你应该有“工作 Wi-Fi”

于 2013-12-11T01:50:05.403 回答