با سلام
من از دستور زیر استفاده کردم و کلاینتهای متصل شده به سرور را در یک لیست باکس ثبت میکنم
 procedure TForm1.ServerConnect(Client: TTCPConnection);
begin
ClientCounter := 1;
Client.Data := TClientData.Create;

with TClientData(Client.Data) do
begin
Name := Client.PeerIP;
if ListBox1.Items.IndexOf(Name) >= 0
then
begin
Name := Client.PeerIP + '_'+ InttoStr(ClientCounter);
while ListBox1.Items.IndexOf(Name) >= 0 do
begin
Inc(ClientCounter);
Name := Client.PeerIP + '_'+ InttoStr(ClientCounter);
end;
end;

ListBox1.Items.AddObject(Name, Client);


و بعد برای ارسال متن به آنها از دستور زیر استفاده کردم.

          TTCPConnection(ListBox1.Items.Objects[i]).WriteLn(s ,Delim)

بعد از چند ساعت که برای ارسال متن به همه کلاینتها اقدام میکنم پیام خطای زیر برای بعضیهاش صادر میشه.

Error #10038 : An operation was attempt on something that is not a Socket.
میشه راهنمایی کنید؟

مثل اینکه سوکت قطع شده و نامش تو لیست باکس مونده. البته من دستور زیر رو هم تو برنامه دارم.

procedure TForm1.ServerDisconnect(Client: TTCPConnection);
begin

try // 95-7-28
with TClientData(Client.Data) do
begin
Memo1.Lines.Add(Format('%s: %s disconnected', [FormatDateTime('yyyy/MM/DD HH:mm:ss:zzz',Now), Name]));
ListBox1.Items.Delete(ListBox1.Items.IndexOf(Name) );
Free;
end;
except end;
end;