4

Objective-C を使用して、複数接続ベースの連続ダウンロード モジュールを構築しようとしています。

NSURLConnection のイベント (connection:didReceivedData: など) を処理するために、新しい NSThread をセットアップしました。しかし、私のダウンロードは、PC でのテストよりも速くないことがわかりました。

モジュールの情報をログに記録したところ、60 の接続を開始したにもかかわらず、サーバーからデータを受信したのは 6 つの接続だけであることがわかりました。

Windows PC でテストしたところ、接続数が 6 よりもはるかに多いことがわかりました。

そこで、別のテスト アプリを作成して、ダウンロード モジュールの実行中に別のアプリで接続をセットアップできるかどうかをテストしました。

メイン スレッドで 100 の接続を作成し、バックグラウンド スレッドで 100 の接続を作成し、ブロック スレッドを で終了し[[NSRunLoop currentLoop] run];、ロックを使用して共有 NSMutableSet にデータが到着する接続を保存し、リソースの競合を回避し、この可変セットを毎秒ダンプするようにプログラムしました。

次に、可変セットにまだ 6 つのライブ接続 (データの到着がある) があることがわかりました。

そのため、Mac/Cocoa では 1 回の進行あたりの 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 に答える