1

readyReadスロットを使用せずにQTcpSocketを使用することは可能ですか?

TCPサーバーからデータを読み取るためにこのコードを試しました:

QByteArray ba;

forever
{
sck.waitForReadyRead();
ba.append( sck.readAll() );

if (sck.bytesAvailable() == 0)
  break;
}

しかし、サーバーからすべてのデータを受信しないことがあります!?

4

1 に答える 1

2

はい、可能です。TCP はストリーム指向であり、そのような繰り返しから抜け出すことはできません。QAbstractSocketのドキュメントに例があります。

ご覧のとおり、接続が閉じられる ( waitForReadyRead () メソッドが false を返す) まで、または何らかの終了シーケンスを送信するまで読み取りを続ける必要があります。

于 2012-09-08T23:43:42.813 に答える