読み取りに使用できるバイト数を検出したい:
while( socket->ConnectedState == QTcpSocket::ConnectedState ) {
if(socket->bytesAvailable() > 0)
qDebug("%d", test->bytesAvailable());
}
ソケットが接続されていることは確かですがbyteAvailable
、相手から何バイト書き込んでも の戻り値は常に 0 のようです。
しかし、切断後に検出すると:
if (! socket->waitForDisconnected(-1)) {
qDebug("Failed to receive disconnect message from client");
}
else {
qDebug("%d", socket->bytesAvailable());
qDebug(socket->readAll());
qDebug("Disconnected from client");
}
}
デバッグ ウィンドウに送信される情報は適切です: 8 ABCDEFGH
.
これが起こる原因は何ですか?
PS:
相手側から切断した後も実行し続けるため、これもデッド ループのようです。この理由による可能性があります: QTcpSocket 状態は常に接続されており、イーサネット ワイヤを抜いても