0

現在、ブロッキング モデルがあり、クライアントがデータを受信するコードは次のとおりです。

QByteArray tick_stream;
clntSocket->waitForReadyRead(-1);
tick_stream = clntSocket->read(800);

現在clntSocket->waitForReadyRead();、ソケットから読み取るデータがある場合にのみブロックを解除する必要があると考えていますが、それ自体でブロックを解除し、 tick_stream が空であると思われます。

4

1 に答える 1

2

You should check for errors, because it can happen that the method will return immediately on error.

From QtDoc:

bool QIODevice::waitForReadyRead(int msecs) [virtual]

Blocks until new data is available for reading and the readyRead() signal has been emitted, or until msecs milliseconds have passed. If msecs is -1, this function will not time out.

Returns true if new data is available for reading; otherwise returns false (if the operation timed out or if an error occurred).

于 2013-08-12T15:00:48.157 に答える