unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdContext,
IdCustomTCPServer;
type
TForm1 = class(TForm)
server: TIdTCPServer;
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure serverExecute(AThread: TIdContext);
procedure serverConnect(AThread: TIdContext);
procedure serverDisconnect(AThread: TIdContext);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var connessi:integer;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
server.DefaultPort:=strtoint(edit1.text);
server.Active:=true;;
end;
procedure TForm1.serverExecute(AThread: TIdContext);
var listaclient:tlist; i:integer;
messaggioprelevato:string;
begin
messaggioprelevato:=AThread.Connection.IOHandler.ReadLn;
memo1.lines.add(messaggioprelevato);
Listaclient := Server.Contexts.LockList;;
try
for i:=0 to connessi-1 do
try
TIdContext(Listaclient.Items[i]).Connection.IOHandler.WriteLn(messaggioprelevato);
except
TIdContext(Listaclient.Items[i]).Stop;
end;
finally
end;
Server.Contexts.UnlockList;
end;
procedure TForm1.serverConnect(AThread: TIdContext);
begin
AThread.Connection.IOHandler.WriteLn('Benvenuto tu sei il client numero'+inttostr(connessi));
connessi:=connessi+1;
if connessi=1 then
label1.Caption:='1 connesso'
else
if connessi=0 then
label1.caption:='Nessun connesso al server'
else
label1.caption:=inttostr(connessi)+' connessi';
end;
procedure TForm1.serverDisconnect(AThread: TIdContext);
begin
connessi:=connessi-1;
if connessi=1 then
label1.Caption:='1 connesso'
else
if connessi=0 then
label1.caption:='Nessun connesso al server'
else
label1.caption:=inttostr(connessi)+' connessi';
end;
end.