0

QTcpSocket を使用して 1MB のファイルを 200KB/秒 (5 秒転送) で送信したいと考えています。ReadyRead スロット関数は、最初にファイル サイズ (ヘッダー) を読み取り、次にソケットから file_size バイトを読み取りながらブロックするスレッドを開始します。しかし、readyRead スロット関数はファイル転送が終了する前に終了するため、readyRead 関数の新しい呼び出し (新しい ReadyReads の発行) が干渉することはありませんか?

私はここで読んだ: QTcpSocket からの readyRead() シグナルを見逃さないようにする方法は? スロット関数にいる間は、新しい ReadyReads は発行されません。

4

2 に答える 2

0

別のスレッドを開始する必要はありません。すべてのreadyRead()シグナルを処理し、新しいデータをファイルに追加するだけです。最終的にすべてのファイルが受信されます。

転送全体を一度に取得する必要はありません。ファイルを一度にチャンクごとに書き込むだけです。

于 2013-05-14T08:00:56.223 に答える
0

私自身の問題に対する明らかな解決策は、可能であれば、スロット関数内のスロット関数からの readyread() シグナルを disconnect() することです。

于 2013-05-13T19:26:46.473 に答える