QTcpSocket:发送大文件时有多个ReadyReads

QTcpSocket: multiple ReadyReads when sending large file

本文关键字:ReadyReads 文件 QTcpSocket      更新时间:2023-10-16

我想使用QTcpSocket以200KB/秒(5秒传输)的速度发送1MB文件。ReadyRead槽函数首先读取文件大小(头),然后启动一个线程,该线程在从套接字读取file_size字节时阻塞。但是,由于readyRead槽函数在文件传输之前结束,所以对readyRead函数的新调用(发出新的ReadyReads)不会产生干扰吗?

我读在这里:如何确保readyRead()信号从QTcpSocket可以'不会错过?当您在slot函数中时,不会发出新的ReadyReads。

对于我自己的问题,一个明显的解决方案是断开()readyread()信号与slot函数内部的slot函数的连接,如果可能的话。

您不需要启动一个单独的线程。只需处理每个readyRead()信号,并将任何新数据附加到文件中。最终所有的文件将被接收。

您不需要一次完成整个传输,只需一次写入一个块文件。