Moin !
Habe da einen TIdTCPServer wo sich Client connecten können:
Delphi-Quellcode:
type
PClient = ^TClient;
TClient =
record
PeerIP :
string[15];
{ Cleint IP address }
HostName :
String[40];
{ Hostname }
Command :
String[100];
WindowHandel : HWND;
{Window Handle der Applikation}
WindowPosX, WindowPosY,
WindowWidth, WindowHeight : SmallInt;
Connected : TDateTime;
{ Time of connect }
Thread : Pointer;
{ Pointer to thread }
end;
procedure TMainFormServer.TCPServerConnect(AContext: TIdContext);
var
NewClient: PClient;
begin
GetMem(NewClient, SizeOf(TClient));
NewClient.PeerIP := AContext.Connection.Socket.Binding.PeerIP;
NewClient.Connected := Now;
NewClient.Thread := AContext;
AContext.Data := TObject(NewClient);
try
Clients.LockList.Add(NewClient);
finally
Clients.UnlockList;
end;
end;
(* TCPServer Connect *)
Soweit so gut. Nun möchte ich an alle conecteten Client eine Nachricht senden. Ich habe folgendes probiert:
Delphi-Quellcode:
var SelClient : PClient;
i : SmallInt;
begin
try
for I := 0 to Clients.LockList.Count - 1 do begin
SelClient := PClient(Clients.LockList.Items[I]);
TIdContext(SelClient.Thread).Connection.IOHandler.WriteLn('ShutDown');
end;
finally
Clients.UnlockList;
end;
Das klappt aber so nicht. Denn dann verabschiedet sich der Server.
Wie wäre denn hier das richtige Vorgehen?
Ich winke schon mal ein ganz bisserl in Richtung Klaus