Einzelnen Beitrag anzeigen

Rindajel

Registriert seit: 1. Jun 2007
2 Beiträge
 
Delphi 2006 Architect
 
#3

Re: [Indy 10]: mehrere Clients mit TCP-Server verwalten

  Alt 4. Jun 2007, 20:56
Danke für die Antwort, aber um ehrlich zu sein, habe ich von dem, was du geschrieben hast, nicht einmal die Hälfte verstanden. Kannst du es bitte nochmal für Idioten beschreiben?? Wenn möglich auch mit Codebeispielen, vor allem für das OnConnect Ereignis und wie dann Daten an alle Clienten verschickt werden.
Mein OnConnect sieht derzeit so aus:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
AContext.Connection.IOHandler.WriteLn('100 Connected');
AContext.Data:=TUserData.Create;
end;
Ist nicht viel, ich habe es auch nur wo rauskopiert.

Für was ist eigentlich die Bindings Eigenschaft des Servers verantwortlich? Kann ich die Clients nicht auch darüber ansprechen?

Gruß, Rindajel


EDIT: Ich habe versucht, es anhand einer Indy 9 Demo nachzuvollziehen, mein OnConnect sieht jetzt so aus:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
var response:String;
    Client:TUserData;
begin
response:='100 Connected';
AContext.Connection.IOHandler.WriteLn(response);
Client:=TUserData.Create;
Client.Host:=AContext.Connection.Socket.Host; {Greife ich so auf den Host zu, oder geht das über AContext.Connection.IOHandler.Host ??}
Client.Port:=AContext.Connection.Socket.Port; //das selbe wie beim Host
{Client.Thread:=AContext.}  //wie weise ich den Thread zu?
Clients.Add(Client);
{AContext.Data:=TUserData.Create;}
Memo1.Lines.Add('***Verbindung hergestellt mit ' + Client.Host + '***');
Memo1.Lines.Add('Sende ' + response);
end;
Die entsprechende Klasse TUserData sieht so aus:
Delphi-Quellcode:
TUserData = class
  public
    Host:String;
    Port:Integer;
    Thread:Pointer;
  end;
Clients ist eine TList ...

Gruß, Rindajel
  Mit Zitat antworten Zitat