我在发送大量数据的单独线程中有一个 QTcpSocket。其中一些应用程序分布在网络上。

如何检测我的网络是否过载并且我的套接字无法再发送任何内容? QTcpSocket 会缓冲所有数据吗,我怎样才能看到排队等待发送的缓冲数据的大小?这会等于 bytesToWrite() 吗?是否有最大 bytesToWrite()?

如果 QTcpSocket 开始丢弃数据,它将是哪些数据:缓冲区队列中最早的数据,缓冲区队列中的最新数据,...?

最佳答案

显然不是,我只是检查了 Qt 4.5.3 的代码。调用 write() 时,所有数据都放在 QRingBuffer(类不是 Qt API 的一部分)中。 QAbstractData::writeData() 放入数据,QAbstractData::flush() 取出数据。没有发现限制此缓冲区大小的检查。
QAbstractSocket::write() 返回的大小始终是您的数据大小或出现错误时的 -1。

关于qt - 网络过载时 QTcpSocket 的行为是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3778049/

10-10 13:18