0

コードを既存のサーバーに接続していますが、サーバーからの応答を取得できます。

しかし問題は、応答の内容が大きすぎて単純な方法で処理できないことです。

以下は、データを取得するために使用するコードです。

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 を実装する方法がわかりません。誰でもこれについて私を助けてもらえますか?

4

1 に答える 1

1

基本的な解決策は次のとおりです。

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

ループは、読み取りがタイムアウトになるか、エラーが発生した場合 (ソケットが閉じられた場合など) に終了します。

于 2013-08-09T10:16:31.187 に答える