empfangen mit den TcpSockets

Alles rund um die Programmierung mit Qt
Antworten
Hannes W
Beiträge: 8
Registriert: 21. April 2009 10:43

empfangen mit den TcpSockets

Beitrag von Hannes W »

Ich bins mal wieder und habe ein neues Problem..
ich habe ja schon ein Thema zum senden mt den Sockets geöffnet und das Problem gelöst, nun möchte ich mit meinen Sockets etwas empfangen, das der Server mir sendet.
Das Problem ist das ich nicht weiß wie das gehen soll, ich hoffe ihr könnt mir helfen.
Liebe Grüße
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Ich wette dir wird gleich der Link zur Doku gepostet.....

es sei denn du schreibst mal wo es hapert.

Ansonsten kann ich dir auch meine Bankverbindung senden wenn ichs dir proggen soll ;-) Spass beiseite... Dir wird hier keiner was proggen. Wir geben sicher gerne Hilfestellung nur wenn du nicht ein kleinwenig zeigst was du hat wo es hapert wird das schwierig!
Hannes W
Beiträge: 8
Registriert: 21. April 2009 10:43

Beitrag von Hannes W »

Mh der Link wär garnicht so schlecht, wenn ich es da nachsehen kann ..

also mein Problem ist das ich keine Ahnung habe welche Befehle ich brauche, da das senden zu dem Server nicht mit den QDataStreams ging danke ich auch nicht das das empfangen damit funktionieren wird.
Also mir würde schon eine kleine "Starthilfe" sehr viel bringen, glaube ich.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

schau dir doch mal das Fortune Client Example an....

da hab ich folgendes gefunden
The only QTcpSocket signals we need in this example are QTcpSocket::readyRead(), signifying that data has been received, and QTcpSocket::error(), which we will use to catch any connection errors:
...
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readFortune()));
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
...
}
wenn ich mir dann noch die Doku zu den TCP Sockets ansehe.... dannn schaue ich mir an was TCPSocket für Signale sendet... da komme ich dann zu denen aus QIODevice:
Signals
void aboutToClose ()
void bytesWritten ( qint64 bytes )
void readChannelFinished ()
void readyRead ()
1 signal inherited from QObject

So und wenn man dann in der Doku des Fortune Clients weiter schaut... findet man die Methode die aufgerufen wird wenn das readyRead Signal ausgelöst wird:

Code: Alles auswählen

void Client::readFortune()
 {
     QDataStream in(tcpSocket);
     in.setVersion(QDataStream::Qt_4_0);

     if (blockSize == 0) {
         if (tcpSocket->bytesAvailable() < (int)sizeof(quint16))
             return;

         in >> blockSize;
     }

     if (tcpSocket->bytesAvailable() < blockSize)
         return;
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Die Doku zum QTcpServer kennst du doch sicher, oder?
Assistant (resp. http://doc.trolltech.com/4.5). Da gibts ein "see also".
Z.B. die Fortune Client/Server examples. Da siehst du wie man Daten sendet und empfängt.

Ich hoffe das hilft.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

ha....war schneller ;-)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du musstest ja auch nicht 4 mal neu anfangen, weil dir ne Katze in die Tastatur gesprungen ist :P
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

ach.... immer diese ausreden....meine Weinbergschnecke war auch nicht hilfreich:-D

aber wiedereinmal zeigt sich.... eigentlich steht doch alles in der Doku... ich hab noch nie was mit den Sockets gemacht. Aber einfach mal die Demos aufgemacht-Networking... gut dann muss man suchen wo da TcpSockets verwendet werden... aber das sind etl 5 versuche. Dann hab ich den Fortune und dann stehts dort direkt wie´s geht. Was ist daran nur so schwer....
Antworten