Hallo,
ich versuche ja seit geraumer Zeit ein Datenübertragungsprogramm zu schreiben, das mit der QNetwork library sowie QThreads arbeitet. Ich hab jetzt aber ein Problem beim versenden einer Struktur:
Struktur "info" versenden:
Hier hab ich schonmal eine Frage: Ist es wirklich nötig, die Verbindung zu trennen, damit die Daten gesendet werden?
Struktur "info" empfangen:
So, hier hab ich mein eigentliches Problem(vermute ich mal), also die Daten kommen schonmal an, das sind die gewünschten 332Bytes. Problem ist nur, dass dann später beim Auslesen die Struktur leer ist. Kann mir da jemand helfen?
Die Sende-und die Empfangsroutine laufen in je einem Thread.
Gruß
cesupa
ich versuche ja seit geraumer Zeit ein Datenübertragungsprogramm zu schreiben, das mit der QNetwork library sowie QThreads arbeitet. Ich hab jetzt aber ein Problem beim versenden einer Struktur:
Struktur "info" versenden:
Code:
QByteArray info((char*)&inf,sizeof(inf)); //Struktur in QByteArray einlesen
int s=socket.write(info); //versenden
//emit error(5,itoa(s,buf,10)); //versendete Bytes ausgeben (332 Bytes)
socket.disconnectFromHost(); //Verbindung trennen
socket.waitForDisconnected();
Hier hab ich schonmal eine Frage: Ist es wirklich nötig, die Verbindung zu trennen, damit die Daten gesendet werden?
Struktur "info" empfangen:
Code:
info inf;
QByteArray infobytes((char*)&inf,sizeof(inf)); //struktur in QByteArray laden
while(socket.bytesAvailable()<infobytes.size()) //Daten empfangen (332 Bytes)
{
if(!socket.waitForReadyRead(Timeout))
{
emit error(socket.error(),socket.errorString());
return;
}
}
QDataStream in(&socket);
in.setVersion(QDataStream::Qt_4_0);
in>>infobytes; //empfangene Daten auslesen und in QByteArray schreiben
inf=*(info*)infobytes.constData(); //Struktur auslesen
emit error(5,infobytes.data()); //für versuchszwecke
//emit error(5,inf.get_filename()); //Ausgabe zum Test("")
So, hier hab ich mein eigentliches Problem(vermute ich mal), also die Daten kommen schonmal an, das sind die gewünschten 332Bytes. Problem ist nur, dass dann später beim Auslesen die Struktur leer ist. Kann mir da jemand helfen?
Die Sende-und die Empfangsroutine laufen in je einem Thread.
Gruß
cesupa