Hallo zusammen,
ich möchte mit meinem QTcpServer mehrere QTcpSockets verwalten.
Also ein Server der mehrere Clients bedient.
Jetzt lege ich mit jedem zurückgelieferten QTcpSocket aus QTcpServer::nextPendingConnection() einen Zeiger auf diese Instanz in einer Liste ab. Hat der Server Daten zu versenden, dann geh ich die Liste durch und sende somit an alle Clients.
Soweit so gut.
Bricht aber jetzt eine Verbindung ab, so bleibt mit ewig die Referenz auf diese Instanz in der Liste enthalten. Da am QTcpServer keine Methode zu finden ist wie z.B. ein QTcpServer::abortedConnection(QTcpSocket*), weiss ich nicht wie ich meine Liste sauber halten kann.
Nen Absturz hab ich dann, wenn ich auf die ungültige Referenz zugreife.
Zuerst nachprüfen ob die Verbindung noch gültig ist bringt auch nix. Nach einen disconnect hängt ja nur noch die Referenz in der Liste, dass Objekt dahinter gibts nicht mehr.
Jemand eine Ahnung wie ich das machen kann?
-jack
Mehrere QTcpSockets verwalten mit QTcpServer! Wie?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
CaptnChaos
- Beiträge: 605
- Registriert: 28. Juni 2007 15:01
- Kontaktdaten:
Du kannst glaube ich das signal "disconnected()" vom QTcpSocket benutzen.
Also quasi dann wenn du den client in deine Liste einfügst dieses signal auch mit einem Slot verbinden der dann den client aus deiner liste löscht.
Und sonst schick vor dem disconnect ein packet das dem Server mitteilt das der client weg ist.
Also quasi dann wenn du den client in deine Liste einfügst dieses signal auch mit einem Slot verbinden der dann den client aus deiner liste löscht.
Und sonst schick vor dem disconnect ein packet das dem Server mitteilt das der client weg ist.