Hallo,
ich habe ein kleines (Verständnis) Problem mit Sockets.
Ich habe einen Server und mehrere Clients. Die Clients verbinden sich beim Starten der Clientanwendung automatisch mit dem Server und warten von diesem auf Befehle - also sog. Push-Technologie eingebaut, weil ich explizit Pull-Technologie (Polling) von Seiten der Clients vermeiden wollte.
Problem ist aber, wenn der Server nicht ordnungsgemäß beendet wird - alle Socket-Connections werden nicht explizit geschlossen - dann bekommen die Clients das nicht mit und warten "schön brav" weiter auf Anweisungen vom Server obwohl dieser schon down ist. Wenn dieser dann wieder hoch fährt, ändert sich nix bei den Clients, denn die warten einfach auf Anweisungen, welche aber der neu gestartete Server nicht mehr senden kann, weil er die vorherigen Verbindung nicht kennt.
OK, es ist schon richtig, dass der Server immer ordnungsgemäß heruntergefahren werden soll, aber wie wir wissen, passieren ja immer die unmöglichsten Umstände.
Ich habe jetzt einen Workaround eingebaut, der mich aber nicht in Ruhe lässt.
Ich polle jetzt alle paar Sekunden mit jedem Client den Server an, sende ein Ping und wenn der Server down ist, dann wird die Verbindung geschlossen, somit ist sichergestellt, dass sich die Clients automatisch wieder anmelden beim Server, wenn der wieder verfügbar ist.
Jetzt meine Frage. Ist diese Vorgehensweise der einzige Ausweg? Ich wollte polling vermeiden und musste es doch wieder einbauen.
Gibt es eine andere Lösung?
Vielen Dank für etwaige Antworten schon einma im Voraus.
ich habe ein kleines (Verständnis) Problem mit Sockets.
Ich habe einen Server und mehrere Clients. Die Clients verbinden sich beim Starten der Clientanwendung automatisch mit dem Server und warten von diesem auf Befehle - also sog. Push-Technologie eingebaut, weil ich explizit Pull-Technologie (Polling) von Seiten der Clients vermeiden wollte.
Problem ist aber, wenn der Server nicht ordnungsgemäß beendet wird - alle Socket-Connections werden nicht explizit geschlossen - dann bekommen die Clients das nicht mit und warten "schön brav" weiter auf Anweisungen vom Server obwohl dieser schon down ist. Wenn dieser dann wieder hoch fährt, ändert sich nix bei den Clients, denn die warten einfach auf Anweisungen, welche aber der neu gestartete Server nicht mehr senden kann, weil er die vorherigen Verbindung nicht kennt.
OK, es ist schon richtig, dass der Server immer ordnungsgemäß heruntergefahren werden soll, aber wie wir wissen, passieren ja immer die unmöglichsten Umstände.
Ich habe jetzt einen Workaround eingebaut, der mich aber nicht in Ruhe lässt.
Ich polle jetzt alle paar Sekunden mit jedem Client den Server an, sende ein Ping und wenn der Server down ist, dann wird die Verbindung geschlossen, somit ist sichergestellt, dass sich die Clients automatisch wieder anmelden beim Server, wenn der wieder verfügbar ist.
Jetzt meine Frage. Ist diese Vorgehensweise der einzige Ausweg? Ich wollte polling vermeiden und musste es doch wieder einbauen.
Gibt es eine andere Lösung?
Vielen Dank für etwaige Antworten schon einma im Voraus.