我正在使用从 QIODevice 派生的 QLocalSocket。文档QIODevice::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(),它们会阻塞直到操作完成或超时到期。
因此,我很困惑。任何人都可以对此有所了解吗?