gpt4 book ai didi

iOS - 随机 "Cannot connect to host"3G

转载 作者:可可西里 更新时间:2023-11-01 03:09:09 24 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,该应用程序用作业务服务器的瘦客户端。向服务器发送了很多请求,下载了很多数据。

我不使用任何花哨的请求框架,只使用带有委托(delegate)的异步 NSURLConnection

该应用程序通常在 wifi 和 3G 上都能很好地工作但是

一些用户报告在使用 3G 时随机断开连接(在美国)。所有请求都正常,但偶尔会有一个请求因“无法连接到主机”(-1004) 错误而失败。

这对用户体验影响很大。

一些事实:

  1. 在 wifi 上不会发生
  2. 用户报告说使用 3G 时其他应用程序不会发生这种情况。
  3. 这不是超时问题,错误出现在开始连接后 0.3-1.0 秒。
  4. 我们无法使用 traceroute 重现该问题。
  5. 使用 SCNetworkReachability 主机似乎可以访问(我知道此 API 的局限性)。

问题 问题的原因可能是什么? 3G 和 wifi 的连接属性有哪些不同?我该如何调试它?

目前我看到的唯一解决方案是,如果上一个请求失败,请尝试再次发送请求。但是,我想先找到问题的原因。

编辑 这个问题可能是由我们的一个路由器引起的。 IT 人员仍在检查问题。

最佳答案

所有错误代码都可以在 Apple 文档中找到

CFNetwork Error Codes Reference

代码-1004仅被描述为

kCFURLErrorCannotConnectToHost

The connection failed because aconnection cannot be made to the host. Available in OS X v10.6 andlater. Declared in CFNetworkErrors.h.

这基本上意味着用户已连接(他未处于飞行模式,数据流量已打开,他的手机已在网络中注册,您有一个有效的 URL 等)但被主动阻止连接到服务器。如果服务器没有响应,如您所描述的那样,经过较长的等待时间后,您会遇到更像是超时错误的情况。这种错误可能是由于阻止到服务器的流量而导致的,例如,如果用户位于防火墙或代理后面,则可能会发生这种错误。

问题实际上可能是由提供商引起的,特别是如果您对某些用户没有问题,而对其他用户则随机出现问题。

正如其他一些发帖人所说,您可以尝试询问您的用户有关他们的服务提供商的信息,以及有关他们位置的更多详细信息,或者当他们收到错误消息时他们正在做什么(例如坐在车里或信号不好的地方)农村)

如果您找不到任何模式,并且如果错误真的只是随机发生并且只针对某些用户,而且只是有时,我会认为这是另一个不可避免的问题,可能是由于 手机永远无法保证一直连接,而且一些手机供应商可能不会总是交付 100% 应该交付的所有包裹......那么你需要做的只是处理错误。

通过简单地重试来消除错误,而不是将其显示给用户,至少在进行了足够多的重试之后。

最后要考虑的一件事:

如果您从您的应用发送大量请求和大量数据,请确保您没有通过发送大量未完成的请求来“过度消耗”。这可能会导致途中的服务器或某些代理服务器拒绝您的请求,因为它正忙于回答您的其他请求。拒绝请求可能会导致这样的错误。确保发送合理数量的请求,以便您的用户的设备有时间“喘口气”。

让您的重试方案成为一个聪明的方案,您可以在较短的时间内重试多次,如果一直失败,则增加下一次重试的时间跨度。

关于iOS - 随机 "Cannot connect to host"3G,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com