【问题标题】:QTcpSocket: multiple ReadyReads when sending large fileQTcpSocket:发送大文件时有多个ReadyReads
【发布时间】:2013-05-07 20:55:00
【问题描述】:

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

我在这里读到:How to make sure that readyRead() signals from QTcpSocket can't be missed? 当你在 slot 函数中时,不会发出新的 ReadyReads。

【问题讨论】:

    标签: c++ qt qtcpsocket


    【解决方案1】:

    如果可能的话,我自己的问题的一个明显解决方案是从插槽函数中的插槽函数断开() readyread() 信号。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-07-15
        • 2014-01-30
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多