此函数的剂量总是返回buf.size()或-1? 如果没有,剂量意味着我需要回想一下写入左边数据的功能不被写入?
例如,如果我有一个100字节的QByteBuffer。 当我调用“tcpSocket.write(buf_100_bytes)”时,我有可能得到60或其他东西吗?
此外,剂量此功能立即返回?
答案 0 :(得分:2)
与POSIX write()一样,QIODevice :: write()返回写入的字节数。这可以是介于0和缓冲区大小之间的任何数字。此外,如果出现错误,可能会返回一个负数,您应该单独检查。 QIODevice :: write()不阻塞套接字(它们被设置为非阻塞模式),字节只是添加到缓冲区并稍后写入。 要在写入字节时收到通知,可以连接到bytesWritten(qint64)信号。要阻塞直到实际写入字节,你可以使用waitForBytesWritten()(在主/ UI线程中通常不是一个好主意)。
答案 1 :(得分:0)
我引用Qt文档:
将最多maxSize字节的数据从数据写入设备。返回实际写入的字节数,如果发生错误,则返回-1。
这意味着,它将返回写入的字节数或-1,以防出现错误。您可以通过调用error()方法或连接到error()信号来获取错误。