Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » KDevelop / Qt / wxWidget » close event

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.07.2006, 15:26 Uhr
dynamo



Hi!
Vielleicht kann mir jemand helfen. Das System, das ich unter Windows entwickle, besteht aus einem Server und einem Client.
Client ist eine Qt-GUI, ist nur für die grafische Darstellung von Daten verantwortlich, sendet die Daten dem Server und empfängt die bearbeiteten Daten zurück. Dieser Prozess ist iterativ, dauert eine Weile, hängt natürlich von der Datenmenge und dem maximalen Iterationsschritt ab.
Server ist eine Win32 Konsole, verwendet auch Qt-Klassen, aber keine grafischen Elemente, bearbeitet die vom Client empfangenen Daten und sendet diese zurück.

Das Problem: wenn man den Server während der Bearbeitung abschaltet, bleibt Client hängen.
Frage: wie kann man dieses Ereignis (close event ) beim Schließen von Konsole abfangen, damit die entsprechende Meldung dem Client zur Verfügung gestellt (gesendet) wird.

Ich wäre für den guten Rat sehr dankbar.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.07.2006, 09:06 Uhr
stephanw
localhorst


Ich weiß gerade nicht, wie geordnet Windows das in der Konsole laufende Programm aufräumt. Aber vielleicht kannst Du ja einen exit-Callback ( siehe atExit() ) registrieren, der beim Beenden aufgerufen wird. Dort dann eine Nachricht senden.
Sollte das nicht klappen -was ich annehme-, könntest Du im Client immer wieder timeouts setzen, nach denen vom Server Daten gekommen sein müssen. Läuft ein timeout aus, lebt der Server nicht mehr. Ggf. müsstest Du Dein Protokoll entsprechend erweitern. Falls Du nicht immer Datenverkehr hast, müsstest Du dann eben doch alle z.B. 3 Sekunden ein Lebenszeichen einbauen.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.07.2006, 22:09 Uhr
dynamo



Hallo Stephan,

Vielen Dank für die Hilfe. Dieses Problem habe ich schon seit langem durch den Einsatz von QTimer gelöst:


C++:
d->timer = new QTimer(this);
connect(d->timer,
            SIGNAL(timeout()),
            this,
            SLOT(onCheckServerConnection()));




In dem slot prüfe ich jede Sekunde, ob die Verbindung mit dem Server noch besteht. Falls Client mit dem Server nicht verbunden ist,
gebe ich einfach eine Meldung aus:


C++:
QMessageBox::information(this,                              "Denoiser",
"The connection with the server cannot be produced,\n"
"because either the server was switched off, or the\n"
"network connection was broken off!");




Mein Thread, in dem der Algorithmus auf der Server-Seite läuft, wird
durch das Abschalten des Servers sowieso beendet. Da brauche ich nichts zu machen.

Nochmals, Vielen Dank.
Gruß, Anatoly

Dieser Post wurde am 19.07.2006 um 22:32 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ KDevelop / Qt / wxWidget ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: