procedure TForm1.btStopClick(Sender: TObject);
var
i: integer;
begin
{ for i := 0 to Clients.Count-1 do
begin
if Assigned(Clients[i]) and (TIdPeerThread(Clients[i]).Connection.Connected) then
begin
TIdPeerThread(Clients[i]).Connection.WriteLn('good bye');
end;
end;}
try
IdTCPServer1.Active := false;
except
constructor TClientInfo.create(AName: string);
begin
inherited Create;
Name := AName;
end;
constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
Clients := TList.Create;
end;
destructor TForm1.destroy;
var
i: integer;
begin
for i := 0 to Clients.Count -1 do
begin
if Assigned(Clients[i]) then
TClientInfo(Clients[i]).Free;
end;
Clients.Free;
inherited;
end;
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
AThread.Data := TClientInfo.create('noname');
Clients.Add(Pointer(AThread));
end;
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
var
i: integer;
begin
for i := 0 to listBox1.Count-1 do
begin
if TClientInfo(AThread.Data).name = listBox1.Items[i] then
listBox1.Items.Delete(i);
end;
Clients.Remove(AThread);
end;
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
{var
str: string;
begin
if TClientInfo(AThread.Data).name = 'noname' then
(AThread.Data as TClientInfo).name := AThread.Connection.ReadLn()
else begin
str := AThread.Connection.ReadLn();
end;}
end;
procedure TForm1.IdTCPServer1dateCommand(ASender: TIdCommand);
var
format: string;
begin
format := 'yyyyÄêmmÔÂddÈÕ';
if ASender.Params.Count >0 then
format := ASender.Params[0];
ASender.Thread.Connection.WriteLn(FormatDateTime(format, Now));
end;
procedure TForm1.IdTCPServer1NoCommandHandler(ASender: TIdTCPServer;
const AData: String; AThread: TIdPeerThread);
begin
if TClientInfo(AThread.Data).name = 'noname' then
begin
TClientInfo(AThread.Data).name := AData;
ListBox1.Items.Add(AData);
end
else begin
AThread.Connection.WriteLn('ÎÞЧµÄÃüÁî');
end;
end;
procedure TForm2.IdTCPClient1Connected(Sender: TObject);
var
str: string;
begin
IdTCPClient1.WriteLn(trim(txtName.Text));
end;
procedure TForm2.Button1Click(Sender: TObject);
var
str: string;
begin
if not IdTCPClient1.Connected then
begin
showmessage('δÁ¬½Ó·þÎñÆ÷');
exit;
end;
IdTCPClient1.Writeln(trim(txtCmd.Text)+trim(txtParam.Text));
str := IdTCPClient1.ReadLn();
Memo1.Lines.Add(str);
if str = 'good bye' then
btBreak.Click;
end;