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