Mehrere QTcpSockets verwalten mit QTcpServer! Wie?
Verfasst: 22. Juli 2010 09:22
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
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