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()信号来获取错误。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...