【问题标题】:server response with QTCP Socket使用 QTCP 套接字的服务器响应
【发布时间】:2013-08-09 10:01:54
【问题描述】:

我正在将我的代码连接到现有服务器,并且能够从服务器获得响应。

但问题是响应的内容太大,无法简单处理。

下面是我用来检索数据的一段代码。

socket->waitForReadyRead(1000);
    array = socket->readAll();
    for(int i=0; i< array.size();i++){
        //qDebug()<< array[i];
        test += array[i];
    }

    qDebug()<< "cmd Part 2: ";
    socket->waitForReadyRead(1000);
    array = socket->readAll();
    for(int i=0; i< array.size();i++){
        //qDebug()<< array[i];
        test += array[i];
    }

我在使用 for 循环简化上述代码时遇到了问题。

我不知道如何在我的 for 循环中实现 socket->waitForReadyRead。谁能帮我解决这个问题?

【问题讨论】:

  • 我认为您要做什么以及问题出在哪里还不清楚。您知道您希望读取多少数据吗?
  • 是的,有很多。想象一下,您正在检索一个有 100 行和 15 列的表。我必须一遍又一遍地重复上面的代码,直到我能够检索到所有数据。
  • @dunc123 不仅如此,在我再次开始阅读之前,我必须让套接字等待每次。如上所述,我能够检索所有数据,但我想通过将上述代码放在 for 循环中来简化它。

标签: qt qtcpsocket qtcpserver


【解决方案1】:

一个基本的解决方案是:

while (socket->waitForReadyRead(1000))
{
    QByteArray array = socket->readAll();
    // do stuff
}

当读取超时或出现错误(例如套接字关闭)时,循环将退出。

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    相关资源
    最近更新 更多