Servus,
habe mir eine kleine Client / Server Anwendung mit den Sockets programmiert.
Soweit ist auch alles fertig. Jetzt teste ich gerade meine Anwendung.
Lokal starte ich einen Server und 20 Clients. Dann kommt es machmal vor das die Clients die Verbidnung trennen und wieder neu aufbauen.
Jetzt ist mir aufgefallen das der Server am Anfang ganz gut arbeitet auch mit 20 Clients.
Nach einer Zeit x melden sie die Clients neu an und der Server "hackt".
Der Server macht nichts anderes als Jobs in einem Thread anzunehmen und diese zu verarbeiten bzw. an einer Klasse weiterzugeben.
Aufgefallen ist mir auch gerade das wenn ich den Server beende und neu starte melden sich die Clients neu an.
Nach einigen Sekunden hängt der Server und bekommt sich auch nicht mehr ein.
Schwer zu erklären,
aber der Client senden einen Key. In der Readmethode des Servers bekomme ich den Befehl das der Client sich erfolgreich angemeldet hat (Key).
Also rufe ich aus der Readmethode Synchronize(fOnClientConnect); auf, eine Methode aus meiner Klasse.
Dort schaue ich in einer
SQL Datenbank ob daten für den Client da sind, wenn ja schicken.
In der Zeit wo Synchronize(fOnClientConnect) aufgerufen wird kann der Server ja keine weiteren Anfragen entgegen nehmen.
Hoffe das ist soweit klar wie ich das meine, weis nicht wie ich es besser beschreiben soll.
Wie kann ich das Problem lösen? Nicht alle Jobs werden in den JobThread weitergegeben. Vorher wird geschaut ob es ein wichtiger System befehl ist(Ping Pong Key) und wird direkt verarbeitet, deswegen vielleicht auch die Probleme mit Synchronize(fOnClientConnect)
mfg