【问题标题】:NSURLSession bandwidth limitingNSURLSession 带宽限制
【发布时间】:2017-09-22 15:05:14
【问题描述】:

有没有办法限制 NSURLSession 中的带宽?

我正在为 macOS 制作文件同步客户端,例如 Dropbox/GoogleDrive/pCloud,它们都有带宽限制选项,但我不确定如何配置 NSURLSession 以遵守带宽限制。

【问题讨论】:

    标签: macos nsurlsession bandwidth-throttling


    【解决方案1】:

    除非 Apple 最近添加了一些东西,否则 NSURLSession 不提供带宽限制功能。我知道这样做的唯一方法是:

    • 使用允许您提供自己的套接字的较低级别的 API,然后在 TCP 套接字级别限制数据速率。
    • 提供应用内 Web 代理并将其用于所有传出请求。配置代理以限制通过它的所有请求的带宽。

    【讨论】:

    • 谢谢 dgatwood,您知道任何可以在这种情况下提供帮助的应用内网络代理吗?
    • 您好,根据您的回答,NSURLSession 在内部使用 CFNetwork,就像上一个答案中提到的 ASIHTTPRequest 一样。由于 ASIHTTPRequest 支持限制,也许有一种方法可以从 NSURLSession 访问较低级别的 CFNetwork 对象,并将它们配置为限制?你认为这是可能的吗?
    • 没有。 NSURLSession 根本不公开它的 CF 基础。在后台会话中(您可能希望将其用于进行大量上传和下载的操作),甚至不会在您的应用程序进程中发出请求,因此跨进程边界编组 CF 结构可能无法正常工作,即使您可以找到一种在前台请求中访问这些结构的方法。这确实是“提交增强请求”的事情。
    【解决方案2】:

    看起来像 ASIHTTPRequest 功能 Bandwidth throttling support。虽然它可能是一个旧库,但据我观察它仍然功能齐全,因此可能值得探索。

    当然,使用ASIHTTPRequest 需要为此目的放弃NSURLSession

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多