ich möchte eine Serveranwendung auf der Basis von QTcpSocket schreiben. Dazu habe ich mir einen Server auf der Basis des ThreadedFortuneServer Example aufgebaut. Das Empfangen der Daten vom Client funktioniert auch prima. Nun möchte ich dem Client eine Bestätigung zurück schicken, um den Erfolg bzw. Misserfolg der Übertragung zu signalisieren.
Momenten sieht mein Thread folgendermaßen aus:
Code: Alles auswählen
#include "CoreServerThread.h"
#include <QtNetwork>
#include <iostream>
CoreServerThread::CoreServerThread(int socketDescriptor, QObject *parent) : QThread(parent), socketDescriptor(socketDescriptor)
{}
void CoreServerThread::run()
{
blockSize=0;
QTcpSocket socket;
tcpSocket = &socket;
//Pruefen, ob Socket verfuegbar
if(!socket.setSocketDescriptor(socketDescriptor))
{
emit error(socket.error());
return;
}
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readData()));
//Kommunikation mit dem Socket
tcpSocket->waitForDisconnected(-1);
}
void CoreServerThread::logError(QAbstractSocket::SocketError socketError)
{std::cerr << "Socket Error: " << socketError << std::endl;}
void CoreServerThread::readData()
{
QByteArray input(2,0x00);
QDataStream in(tcpSocket);
quint8 tmp=0;
if(tcpSocket->bytesAvailable()==1){
in>>tmp;
input[0]=tmp;
if(0x31==input[0]){
std::cout<<"klasse"<<std::endl;
//ASSERT!!!
in<<0x00;
//ASSERT!!!
}
else{std::cout<<"Fehler"<<std::endl;}
}
else{std::cout<<"Falsche Länge"<<std::endl;}
}Habe ich etwas grundlegenden bei der Kommunikation via TCP übersehen? Hat vielleicht jemand einen Vorschlag, wie ich diese Bidirektionale Kommunikation realisieren kann oder sogar ein Code-Schnipsel?
Vielen Dank
HeikoB