【问题标题】:Is there connection limit of NSURLConnection in Mac Cocoa Application?Mac Cocoa 应用程序中是否存在 NSURLConnection 的连接限制?
【发布时间】:2013-03-05 13:26:45
【问题描述】:

我正在尝试使用 Objective-C 构建一个基于多连接的持续下载模块。

我设置了一个新的NSThread来处理NSURLConnection的事件(比如connection:didReceivedData:)。但是我发现我的下载速度并没有我在电脑上测试的那么快。

当我记录我的模块的一些信息时,我发现只有 6 个连接从服务器接收到数据,即使我启动了 60 个连接。

我在windows PC上测试后发现它的连接数远大于6。

所以我写了另一个测试应用程序来测试当我的下载模块运行时我是否可以在另一个应用程序中建立一些连接。

我编程在主线程中创建 100 个连接,在后台线程中创建 100 个连接,使用[[NSRunLoop currentLoop] run]; 阻止线程退出,使用锁将数据到达的连接存储在共享的 NSMutableSet 中以避免资源冲突,每秒转储这个可变集。

然后我发现可变集中还有6个live connection(有数据到达)。

所以我相信在 Mac/Cocoa 中每个进度的 NSURLConnection 计数是有限制的。

我想知道如何使限制更大,例如 20 或其他?

非常感谢。

【问题讨论】:

标签: macos cocoa nsurlconnection limit progress


【解决方案1】:

我们可以通过使用 CFNetwork API (CFHTTPMessage) 来打破这个限制。

这里是 CFNetwork 编程指南。 https://developer.apple.com/library/mac/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001132

顺便说一句,如果您决定使用 CFNetwork,则需要绕过代理并进行身份验证。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多