【问题标题】:SCNetworkReachabilityGetFlags gives wrong results [duplicate]SCNetworkReachabilityGetFlags 给出错误的结果 [重复]
【发布时间】:2013-01-17 22:18:31
【问题描述】:

可能重复:
SCNetworkReachabilityGetFlags returns 0 even when wireless available

我们正在使用 SCNetworkReachabilityGetFlags 来确定互联网连接是否可用。在某些手机上,它偶尔会提供错误信息,表示无法访问某些主机或 IP 地址。当忽略标志并启动请求时,一切正常。

这个答案表明再次打开和关闭飞行模式会释放缓存 SCNetworkReachabilityGetFlags 可能正在使用: SCNetworkReachabilityGetFlags returns 0 even when wireless available

从可用性的角度来看,这显然不是一个真正的选择。有没有人遇到过同样的问题?是否有其他方法可以检查可达性?

【问题讨论】:

    标签: iphone ios nsurlconnection connectivity


    【解决方案1】:

    我正在重置网络设置我的工作。

    【讨论】:

    • 这似乎是一个普遍的问题,不仅在这个特定的手机上。如果连接实际可用,则用户不必更改设置中的任何内容。
    【解决方案2】:

    你也可以使用一个不错的 NSURL 方法,

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

    NSURL Developer documentation

    如果您想在网络离线(或在线)时收到通知,这当然不是很有用,就像系统配置一样。

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

    【讨论】:

    • 那么在看门狗中你使用的是 NSURL 方法吗?您可以确认与 SCNetworkReachabilityGetFlags 有相同的问题吗?即使在重新启动应用程序后我们也会体验到它。
    • 没有我的库负责确定网络是否可达,在这种情况下不使用 NSURL。 - 我自己也试过这个..这对你来说没用,因为这似乎只适用于文件资源而不是远程资源。您也可以尝试编写一个能够通过套接字发送数据包的类,如果成功,您知道网络是可访问的,在 SC 文档中他们基本上说他们做同样的事情..
    • 来自链接文档:checkResourceIsReachableAndReturnError: 返回是否可以访问 file URL 指向的资源。所以这种方法不是一种选择。
    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2011-11-15
    • 2019-02-06
    相关资源
    最近更新 更多