2016-10-24 6 views
0

タグを使用しないで、 "できるだけ早く"書き込む方法はありますが、書き込まれていないブロブの大量のメモリ内バッファを構築することなく、どのようにOSソケットへの書き込みの進行状況を記録しますか? socket:didWritePartialDataOfLength:tag:イベントを使用する必要がありますか?GCDAsyncSocketの書き込みを抑制する方法は?

ソケットがデータを書き込んだが、書き込み全体を完了していないときに呼び出されます。プログレスバーの更新などに使用できます。

GCDAsyncSocketは、新しい書き込み呼び出しでハングすることがあります。なぜなら、それ以上のメモリを割り当てないからです。

どのくらいの頻度で発射しますか?新しい書き込みをキューに入れる前に、どのくらいの量がすでにメモリに保留中であるかを知るにはどうすればよいですか?

答えて

0

私自身の質問に答えると、実際に実験するだけで十分だったことが判明しました。

最大2つのチャンクを書き込み、チャンクが書き込まれたGCDAsyncSocketからコールバックを取得すると、新しいチャンクを書き込みます。部分データ・コールバックを使用して、細粒度の進行状況を追跡します。タグを使用してチャンクに番号を付けます。それでおしまい。

関連する問題