Einzelnen Beitrag anzeigen

Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#15

AW: TIdTCPServer / TIdTCPClient => Ping - Pong

  Alt 21. Jun 2010, 18:07
So nach dem ich jetzt schon den ganzen Tag am test bin und einfach nicht weiter weis.... Möchte ich das ganze mal beschreiben, vielleicht mach ich im Ansatz was falsch.

Ziel des Projektes ist es ein einfachen Server / Client zubekommen der Text über das Netzwerk sendet, später noch mit SSL. Die Clients müssen überwacht werden und sobald eine Verbindung nicht stimmt, muss der Server die Verbindung trennen und der client die Verbindung neu aufbauen.

Der Server / TIdTCPServer.
- Der Server läuft in einem Thread.
- Im Execute vom Thread werden die Vars erstellt und eine While
not Terminated Schleife mit sleep(100).
- Im OnExecute vom Server werden die Daten mit ReadLn und einem Timeout (500)
gelesen. Wenn Daten da sind. Daten in Befehl umwandeln. Wenn Befehl Ping sende
Pong zurück, wenn andere Daten an fOnRead weitergeben zum verarbeiten.
- Es wird kein CriticalSection verwendet.
- Methode OnTimeAlive, hier prüft der Server anhand
einer Liste welche Clients online sind, wenn Client nicht auf Ping antwortet,
Verbindung trennen.

Der Client / TIdTCPClient
- Der Client läuft als Thread.
- Execute vom Thread: prüfen ob Client Online ist, wenn nicht anmelden.
- Execute vom Thread: Daten da, wenn nein exit, wenn ja Daten weiter an fOnRead geben
- Methode Send. Sendet Daten an Server. Erst ein Ping senden und auf ein Pong warten,
wenn Pong ok, dann Daten senden, wenn nicht exit und Verbindung neu aufbauen.
- Es wird kein CriticalSection verwendet.
- Per Timer sendet der Client zum Test einen String zum Server.

Soweit so gut, aber irgend wie komme ich noch wo durcheinander so das mein Client einfriert.

(Noch ne frage, bei den Sockets habe ich die Befehle in einer Jobliste verarbeitet, heist wenn ein job nur halb gesendet wurde, wird gewartet bis dieser ganz da ist und erst dann weiter gegeben, wie ist das bei den Indys. Muss ich mich auch drum kümmern, wenn ein Befehl zu groß ist das dieser auch ganz ankommt?
Glaube das mit den Indy Threads habe ich noch nicht ganz verstanden )

Mfg

Geändert von Jackie1983 (21. Jun 2010 um 19:04 Uhr)
  Mit Zitat antworten Zitat