3
我正在使用從QIODevice派生的QLocalSocket。 QIODevice::write
的文檔說如何在不阻塞的情況下寫入QLocalSocket :: write中的所有數據?
寫入數據的最大maxSize字節的數據到設備。返回實際寫入的字節數,如果發生錯誤,則返回-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(),直到操作完成或超時過期。
因此我深感困惑。 任何人都可以請說明這一點?