私はQTとC++の初心者です。複数のクライアントを処理できるように、QThreadpoolsを使用してQTcpserverを作成しようとしています。複数のクライアントが問題なく接続できます。しかし、画像データの終わりを示すフッター「IMGPNG」を使用して、Android携帯から画像を送信しようとしています。さて、readyRead信号が発せられたときの問題は、利用可能なすべてのデータを読み取り、後で文字列操作を実行して画像を再構築しようとしています。各クライアントの完全なイメージを受け取り、それに応じて処理する方法がわかりません。
void VireClients::readyRead()//read ready
{
int nsize = socket->bytesAvailable();//trying to check the available bytes
qDebug()<< "Bytes Available" << nsize;
while(socket->bytesAvailable() < nsize){
QByteArray data = socket->readAll();//how to receive all the data and then process it
}
/*!These lines call the threadpool instance and reimplement run*/
imageAnalysis = new VireImageAnalysis(); //creating a new instance of the QRunnable
imageAnalysis->setAutoDelete(true);
connect(imageAnalysis,SIGNAL(ImageAnalysisResult(int)),this,SLOT(TaskResult(int)),Qt::QueuedConnection);
QThreadPool::globalInstance()->start(imageAnalysis);
}
データを完全に取得する方法や、受信したデータを画像形式で保存する方法がわかりません。画像データを完全に受信する方法を知りたいです。助けてください。