Qt Clientverbindung unterbrochen

thekiller

Viceinator
Hallo,

wie kann man beim Server erkennen, dass eine TCP-Verbindung unterbrochen wurde?
Ich verwende Qt in der Version 4.6.2 und beim Server die Klasse QTcpServer/QTcpSocket.
Wird vielleicht ein Signal ausgelöst, ähnlich wie es geschieht wenn eine neue Verbindung eingeht?

Bisher hat mein Server keine Möglichkeit dies zu erkennen und, wenn der Server nun an eine Verbindung die unterbrochen ist Daten senden will, dann stürzt mein Server ab und das würde ich doch gerne vermeiden wollen.

Falls ich zu wenig Infos gegeben habe einfach bescheid sagen.

LG Manuel
 
Okay danke, das hilft mir schonmal weiter.

Leider bringt mir dieses Signal ein Problem mit.
Mein Server kann mehrere Clients behandeln, dass heißt, wenn ich für jeden Client ein Connect erstelle, welches das Signal(disconnected()) bearbeitet und auf meinen Slot(z.b. DisconnectedClient()) geht, habe ich keinerlei Information darüber welche Verbindung nun unterbrochen ist.

Kann ich disconnected() vielleicht reimplementieren und so umschreiben, dass das Signal Parameter mit übergeben kann?

Ein Beispiel:
C++:
// PROBLEM: Keine Information darüber welcher Client disconneted hat
QObject::connect(this->Clients[0].client, SIGNAL(disconnected()), this, SLOT(disconnect());
QObject::connect(this->Clients[1].client, SIGNAL(disconnected()), this, SLOT(disconnect());

// So wäre es für mich Brauchbar(ClientID wird an SLOT-Funktion mit übergeben)
ID = 0;
QObject::connect(this->Clients[ID].client, SIGNAL(disconnected(ID)), this, SLOT(disconnect(ID));
ID = 12;
QObject::connect(this->Clients[ID].client, SIGNAL(disconnected(ID)), this, SLOT(disconnect(ID));

Sry bei reimplementierungen bin ich noch nicht so bewandert...

LG Manuel
 
Zuletzt bearbeitet von einem Moderator:
Zurück