Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

TIdTCPServer : An Gruppe verbundener Clients senden

  Alt 25. Sep 2009, 12:04
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
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat