Seite 1 von 1

QTcpServer

Verfasst: 11. September 2008 13:47
von grisu_1972
Hallo Leute,

ich möchte eine QTcpServer bereitstellen, dieser soll eingehende Nachrichten beantworten.
Ich bin mir nicht sicher, ob ich das Konzept des QTcpServers richtig verstanden habe und möchte auf diesem Weg nachfragen!

Ich habe eine Klasse die als Member einen QTcpServer hat.
Dieser Server erkennt anhand des Signals "newConnection()" das eine Cient eine neue Verbindung anfordert.
Darauf wird die mittels "tcpServer->nextPendingConnection()" eine QTcpSocket abgeholt. Und dann fangen meine Probleme an, ich muss diese QTcpSocket irgendwie verwalten, da ich nicht einzelne Anfragen bearbeiten möchte sondern die Verbindung halten möchte!
Da habe ich natürlich das Problem, das ich durch das Signal "readyRead()" mitbekomme, das eine neue Botschaft eingetroffen ist, ich weiß aber nicht von welchem Client!


Wie löse ich das Problem am besten? Brauche ich eine Klasse z.B. class offenVerbindungen die von QTcpSocket abgeleitet ist um die Verbindungen zu verwalten?

Grüße Carsten

Re: QTcpServer

Verfasst: 11. September 2008 14:21
von macman
grisu_1972 hat geschrieben:da ich nicht einzelne Anfragen bearbeiten möchte sondern die Verbindung halten möchte!
Wenn der Client die Verbindung beendet, dann gibt es auch nichts zu halten. Alles andere findest Du im fortuneserver Example.

Verfasst: 11. September 2008 22:33
von solarix
Da habe ich natürlich das Problem, das ich durch das Signal "readyRead()" mitbekomme, das eine neue Botschaft eingetroffen ist, ich weiß aber nicht von welchem Client!
klingt für mich wie ein Fall für http://doc.trolltech.com/4.4/qsignalmapper.html :
The QSignalMapper class bundles signals from identifiable senders.

Verfasst: 12. September 2008 06:31
von Christian81
solarix hat geschrieben: klingt für mich wie ein Fall für http://doc.trolltech.com/4.4/qsignalmapper.html :
Nein - schlimmer - das ist ein Fall von nicht Doku lesen. QTcpServer erzeugt für jeden Client ein QTcpSocket... aber wie gesagt das ist alles sehr schön im fortuneserver example zu sehen.