QTcpSocket :: write的返回值(QByteArray& buf);

时间:2011-04-14 08:03:53

标签: qt sockets

此函数的剂量总是返回buf.size()或-1? 如果没有,剂量意味着我需要回想一下写入左边数据的功能不被写入?

例如,如果我有一个100字节的QByteBuffer。 当我调用“tcpSocket.write(buf_100_bytes)”时,我有可能得到60或其他东西吗?

此外,剂量此功能立即返回?

2 个答案:

答案 0 :(得分:2)

与POSIX write()一样,QIODevice :: write()返回写入的字节数。这可以是介于0和缓冲区大小之间的任何数字。此外,如果出现错误,可能会返回一个负数,您应该单独检查。 QIODevice :: write()不阻塞套接字(它们被设置为非阻塞模式),字节只是添加到缓冲区并稍后写入。 要在写入字节时收到通知,可以连接到bytesWritten(qint64)信号。要阻塞直到实际写入字节,你可以使用waitForBytesWritten()(在主/ UI线程中通常不是一个好主意)。

答案 1 :(得分:0)

我引用Qt文档:

  

将最多maxSize字节的数据从数据写入设备。返回实际写入的字节数,如果发生错误,则返回-1。

这意味着,它将返回写入的字节数或-1,以防出现错误。您可以通过调用error()方法或连接到error()信号来获取错误。