Forum: PC-Programmierung C++ QTcpSocket und connect()


von Franz K. (Gast)


Lesenswert?

Hallo ich habe eine Frage dazu, wie das ganze hier mit connect und slot 
funktioniert!

Also was ich annehme:

Ich erzeuge ein Objekt "m_qtcpTCPClient", mein TCP Socket!

mit "abort" verwerfe ich alles was bereits am Socket ist!

dann verbinde ich den TCP Socket mit "pop.irgendwas.de" auf Port 110!

das registriere ich schließlich einen SLOT "processDATA", d.h. eine 
Methode, die aufgerufen wird sobald Daten zum Abholen bereitstehen?


Wie jetzt, wann genau wird denn jetzt "processDATA" getriggert?
1
      
2
    m_qtcpTCPClient = new QTcpSocket(this);
3
4
5
    m_qtcpTCPClient->abort();
6
    m_qtcpTCPClient->connectToHost ("pop.irgendwas.de", 110) );
7
    connect(m_qtcpTCPClient, SIGNAL(readyRead()), this, SLOT(processDATA()));

von Philip K. (philip_k)


Lesenswert?

Den slot solltest du vor dem connectToHost() verbinden.

Und aus der Qt-Doku:
1
void QIODevice::readyRead () [signal]
2
This signal is emitted once every time new data is available for reading from the device...

von Franz K. (Gast)


Lesenswert?

OK ich hab mein Felher weiter eingrenzen können....
ich hatte nämlich das Problem, dass dieser SLOT nicht mehr getriggert 
wurde, ich aber damit dort neue Daten kommen können etwas senden muss, 
d.h.
einmal kein Befehl "POP3" gesendet und der Prozess wird nicht mehr 
getriggert und auch nichts nie wieder gesendet.... na ich find da dann 
mal ne Lösung!

von Franz K. (Gast)


Lesenswert?

OK welches Verhalten erwarte ich, wenn ich die mit
"m_qtcpTCPClient->connectToHost ("pop.irgendwas.de", 110) );"
aufgebaute POP3-Verbindung per POP3 Befehl "QUIT"schließe?
Dieses Schließen mache ich im SLOT, der vom SIGNAL getriggert wird, das 
wiederum von der POP3-Verbindung getriggert wird, die aber in den SLOT 
schließe.....
kann irgendwie nicht gehen oder doch?

von Philip K. (philip_k)


Lesenswert?

??? Da komm ich nicht mit...:-)
Wie wärs mit etwas Beispielcode?

von Franz K. (Gast)


Lesenswert?

ganz grob gesagt:

ich trigger eine Funktion mit dem Signal an,
dann schließe ich die Verbindung zum Signal und
die Funktion wird nicht mehr auf gerufen!

von Klaus W. (mfgkw)


Lesenswert?

ok, das ist natürlich ein prima Beispielcode :-)

von Rolf Magnus (Gast)


Lesenswert?

Franz K. schrieb:
> ich trigger eine Funktion mit dem Signal an,
> dann schließe ich die Verbindung zum Signal und

Die Verbindung zum Signal? Meintest du die Verbindung zum Server?

> die Funktion wird nicht mehr auf gerufen!

Wenn die Verbindung geschlossen ist, gibt's ja auch nichts mehr zu 
lesen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.