Einzelnen Beitrag anzeigen

Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#2

Re: Indy TCP (cmd) Server/Client

  Alt 17. Aug 2009, 18:53
Servus, Dragon27!

zu 1:
Ja es ist zulässig. der client wartet beim readln solange(die app freezt) bis etwas vom server kommt.
Deswegen lagert man normalerweise die komplette client komponennte in einen thread aus.

zu 2:
Kann man auch einmal beim start connecten und dann ist das ding stabil bis einer von beiden den löffel abgibt.

zu 3:
Am besten du legst in der server app einen array of TidContext (irgendwie so muss das heißen ^^) an und speicherst in dem onConnect des servers den context ab. Der is für jeden client individuell. (Wenn du mehere clients hinter dem gleichen router hast, also die gleiche incoming ip dann musst du dem client eine id geben und auf den ids basierend deinen traffic managen). Das speichern der clients mach ich immer mit einem record, der alle nötigen infos enthält.
Beispiel:
Delphi-Quellcode:
...
type
  TConnection = record
    id : Integer;
    IP : String;
    nick : String;
    con : TIdContext;
    ready : boolean;
  end;

type
  TConnections = array of TConnection;
...
var
  connections: TConnections;
...
MfG - Ghost007

//Edit: Hab dir mal meine clientthread unit angehängt, sie reagiert zwar nicht auf alle events, die kannst du dir ja im notfall noch ergänzen(Ich hab die nich gebraucht ^^).
Angehängte Dateien
Dateityp: pas clientthread_807.pas (2,0 KB, 57x aufgerufen)
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat