如何解决QTcpSocket :: writeQByteArray&buf的返回值;
| 该函数是否总是返回buf.size()或-1? 如果不是,则表示我需要调用该函数以写入剩余未写入的数据? 例如,如果我有一个100个字节的QByteBuffer。 当我调用\“ tcpSocket.write(buf_100_bytes)\”时,是否有可能得到60或其他? 另外,该功能是否立即返回?解决方法
与POSIX write()一样,QIODevice :: write()返回写入的字节数。可以是0到缓冲区大小之间的任何数字。另外,如果发生错误,它可能会返回负数,您应该单独检查该负数。
QIODevice :: write()不会为套接字阻塞(它们被设置为非阻塞模式),只是将字节添加到缓冲区中,然后再写入。
要在写入字节时获得通知,可以连接到bytesWritten(qint64)信号。要阻塞直到实际写入字节,可以使用waitForBytesWritten()(通常在main / UI线程中不是一个好主意)。
,我引用Qt文档:
将数据的最大maxSize字节从数据写入设备。返回实际写入的字节数;如果发生错误,则返回-1。
这意味着,它将返回写入的字节数,或者在出现错误的情况下返回-1。您可以通过调用error()方法或连接到error()信号来获取错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。