4

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

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

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

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

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

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

然后我发现可变集中还有6个实时连接(有数据到达)。

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

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

提前谢谢了。

4

1 回答 1

0

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

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

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

于 2014-02-21T10:58:38.140 回答