2011-11-14 58 views
0

Possible Duplicate:
SCNetworkReachabilityGetFlags returns 0 even when wireless availableSCNetworkReachabilityGetFlags给出错误的结果

我们正在使用SCNetworkReachabilityGetFlags,以确定是否互联网连接可用。在某些电话上,它偶尔会提供错误的信息,称某些主机或IP地址无法到达。无论如何忽略标志并发起请求,一切正常。

这个回答表明,在切换飞行模式和断开再次释放缓存SCNetworkReachabilityGetFlags可能会使用: SCNetworkReachabilityGetFlags returns 0 even when wireless available

显然,这不是真正从可用性的角度来看的选项。有没有人遇到同样的问题?是否有替代方案来检查可达性?

回答

0

我是重置网络设置我的工作。

+1

这似乎是一个普遍的问题,不仅在这个特定的手机上。如果连接实际可用,则用户不应该在设置中更改任何内容。 – fivanski

0

您也可以使用NSURL的一个很好的方法,

- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error 

NSURL Developer documentation

这当然如果你想收到通知,也不会是非常有用的,当网络进入脱机(或在线就像你可以使用系统配置一样)。

在我的即时通讯Mac应用程序中,我有一个看门狗(20秒定时器),因为SystemConfiguration对我来说并不总是足够可靠。

+0

那么在看门狗中你使用NSURL方法?你可以确认SCNetworkReachabilityGetFlags有同样的问题吗?即使重新启动应用程序,我们也可以体验它。 – fivanski

+0

没有我的图书馆负责确定网络是否可达,在这种情况下不使用NSURL。 - 我也只是自己试过这个,对你来说没用,因为它似乎只适用于文件资源而不适用于远程资源。您也可以尝试编写一个能够通过套接字发送数据包的类,如果您知道网络可以访问,那么在SC文档中它们基本上会说它们做同样的事情。 –

+0

从链接文档:'' checkResourceIsReachableAndReturnError:' 返回是否可以访问由**文件** URL指向的资源。所以这种方法不是一种选择。 –