どのように適切に判断するのに入力して明けましておめでとうございQTCPSocket?

StackOverflow https://stackoverflow.com/questions/4029802

  •  26-09-2019
  •  | 
  •  

質問

私は、以下のコードを読み取るからQTCPSocket:

QString request;

while(pSocket->waitForReadyRead())
{
    request.append(pSocket->readAll());
}

このコードで読み込みのすべての入力を一時停止後30秒です。(デフォルトのタイムアウト.)

の適正を行わないため、長いタイムアウト検出する入力の終わりに達した?(答えることを避け信号が好ましいことが起きても同期して、thread.)

役に立ちましたか?

解決

あなたが期待している正確なバイト数を受信したときに

を確認してくださいする唯一の方法です。これは、一般に、データパケットの先頭にデータのサイズを送信することにより行われます。それは最初に読んで、あなたはそれをすべて取得するまでループし続けます。代替センチネル、データの終わりをマークバイトの特定のシリーズを使用することですが、これは通常、乱雑を取得します。

他のヒント

れば対応状況のようにHTTPリダイレクトのHTTPレスポンスがほとんど含まないコンテンツの長さ、あけましておめでとうございますの接続が終了しますこのデータが送信されますが。

  1. 使用ソケットが開かれます。setReadBufferSizeくならないで美しく決まるところが読みバッファのデータを送付させていただきます。
  2. コソケットが開かれます。waitForDisconnectedためには、リモート側への接続
  3. 使用ソケットが開かれます。bytesAvailableとしてのコンテンツの長さ

この作品であり、接続しない廃棄バッファに格納されたデータをQTcpSocket.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top