QIODevice から派生した QLocalSocket を使用しています。のドキュメントはQIODevice::write
言う
最大 maxSize バイトのデータを data からデバイスに書き込みます。実際に書き込まれたバイト数を返します。エラーが発生した場合は -1 を返します。
関数がバイト未満maxSize
のデータを書き込む状況と、ドキュメントがそれを教えてくれないように見える状況で混乱しています。私はこのようにループすることができます
for(int written = 0; written != len;) {
int writtenNow = sock->write(data + written, len - written);
if(writtenNow != -1) {
written += writtenNow;
} else {
// oops, call cops!
}
}
しかし、すべてのデータを書き込めない場合はどうすればよいでしょうか? 電話するべきwaitForBytesWritten
ですか?のドキュメントによるとQLocalSocket
、これは必要ないはずです
QLocalSocket はイベント ループで使用するように設計されていますが、イベント ループなしで使用することもできます。その場合、操作が完了するかタイムアウトになるまでブロックする waitForConnected()、waitForReadyRead()、waitForBytesWritten()、および waitForDisconnected() を使用する必要があります。
したがって、私は深く混乱しています。誰でもこれに光を当てることができますか?