我正在使用从QIODevice派生的QLocalSocket。 QIODevice::write
的文档说
在什么情况下,函数写入的数据少于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
的文档,这不应该是蜜蜂因此,我感到非常困惑。
任何人都可以对此有所了解吗?
最佳答案
我解决了这样的问题,它在单独的线程中运行write方法,并且主线程不会阻塞
...
QtConcurrent::run(this, &MyClass::writeAsync, sock, data);
...
void MyClass::writeAsync(QLocalSocket socket, QByteArray data) {
socket->write(data);
}