1,594
社区成员
 发帖
 与我相关
 我的任务
 分享unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdTCPConnection, IdTCPClient, IdBaseComponent,
  IdComponent, IdTCPServer, IdContext;
type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    IdTCPClient1: TIdTCPClient;
    ServerLog: TMemo;
    ClientLog: TMemo;
    Button2: TButton;
    Button3: TButton;
    Button1: TButton;
    Button4: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure IdTCPServer1Connect(AContext: TIdContext);
    procedure IdTCPServer1Disconnect(AContext: TIdContext);
    procedure IdTCPServer1Execute(AContext: TIdContext);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
IdTCPServer1.Active :=True;
Button2.Enabled :=false;
ServerLog.Lines.Add('服务器开启成功');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
try
IdTCPClient1.Connect;
  if IdTCPClient1.Connected then
    ClientLog.Lines.Add('连接成功');
Button3.Enabled :=false;
except
ClientLog.Lines.Add('连接失败')
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//初始化服务端 添加bindings
IdTCPServer1.Bindings.Add.IP := '127.0.0.1';
IdTCPServer1.Bindings.Add.Port := 7956;
//初始化客户端
IdTCPClient1.Host :='127.0.0.1';
IdTCPClient1.Port :=7956;
end;
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
ServerLog.Lines.Add('有客户连接!ip:'+AContext.Binding.PeerIP+'port:'+inttostr(AContext.Binding.PeerPort));
end;
procedure TForm1.IdTCPServer1Disconnect(AContext: TIdContext);
begin
//ServerLog.Lines.Add('有客户断开连接!ip:'+AContext.Binding.PeerIP+'port:'+inttostr(AContext.Binding.PeerPort));
end;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  a:string;
begin
a:=AContext.Connection.IOHandler.ReadLn;
ServerLog.Lines.Add(a);
AContext.Connection.Socket.WriteLn('123');
AContext.Connection.IOHandler.WriteLn('abc'); 
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPClient1.Disconnect;
Button1.Enabled :=False;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
IdTCPClient1.IOHandler.WriteLn('aa');
end;
end.var
  I: Integer;
  Context: TIdContext;
begin
  with IdTCPServer1.Contexts.LockList do
    try
      for I := 0 to Count - 1 do
        begin
          Context := TIdContext(Items[I]);
          Context.Connection.IOHandler.Write('Hello,everybody!');
        end;
    finally
      IdTCPServer1.Contexts.UnlockList;
    end;
end;var
  I: Integer;
  Context: TIdContext;
begin
  with IdTCPServer1.Contexts.LockList do
    try
      for I := 0 to Count - 1 do
        begin
          Context := TIdContext(Items[I]);
          if Context.Binding.PeerIP <> '192.168.10.90' then
            continue;
          Context.Connection.IOHandler.Write('Hello!');
        end;
    finally
      IdTCPServer1.Contexts.UnlockList;
    end;
end;