//OnConnect事件 连接成功后触发
//获取IP及端口信息
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
AContext.Connection.Socket.Binding.PeerIP;
AContext.Connection.Socket.Binding.PeerPort;
end;
//IdTCPClient 内存流发送方式
Var //全局变量
RStream: TMemoryStream;
procedure TForm1.FormCreate(Sender: TObject);
begin
RStream := TMemoryStream.Create;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo2.Lines.SaveToStream(RStream, TEncoding.UTF8);
RStream.Position := 0;
IdTCPClient1.IOHandler.Write(RStream);
RStream.Clear;
end;
//IdTCPServer 内存流接收方式
Var //全局变量
RStream: TMemoryStream;
procedure TForm1.FormCreate(Sender: TObject);
begin
RStream := TMemoryStream.Create;
end;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
Var
Hb: TIdIOHandler;
TempStr: TStrings;
begin
Hb := AContext.Connection.IOHandler;
if not Hb.InputBufferIsEmpty then
begin
Hb.CheckForDisconnect(True, True);
Hb.ReadStream(RStream, Hb.InputBuffer.Size);
TempStr := TStringList.Create;
RStream.Position := 0;
TempStr.LoadFromStream(RStream);
RichEdit1.Lines.AddStrings(TempStr);
TempStr.Free;
RStream.Clear;
end;
Sleep(100);
end;
//IdTCPServer 内存流发送方式
Var //全局变量
RStream: TMemoryStream;
procedure TForm1.FormCreate(Sender: TObject);
begin
RStream := TMemoryStream.Create;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
I: Integer;
AContext: TIdContext;
begin
With IdTCPServer1.Contexts.LockList do
Begin
for I := 0 to Count - 1 do
Begin
AContext := TIdContext(Items[I]);
// if AContext.Binding.PeerIP <> '127.0.0.1' then //向指定IP发送数据
// continue;
Memo2.Lines.SaveToStream(RStream, TEncoding.UTF8);
RStream.Position := 0;
AContext.Connection.IOHandler.Write(RStream);
RStream.Clear;
End;
End;
End;
//IdTCPClient 内存流接收方式
//需要添加两个控件 IdAntiFreeze 和 Timer
Var //全局变量
RStream: TMemoryStream;
procedure TForm1.FormCreate(Sender: TObject);
begin
RStream := TMemoryStream.Create;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
Var
I: Integer;
TempStr: TStrings;
Begin
if Not IdTCPClient1.Connected then
Exit;
I := IdTCPClient1.IOHandler.InputBuffer.Size;
if I > 0 then
Begin
IdTCPClient1.IOHandler.ReadStream(RStream, I);
TempStr := TStringList.Create;
RStream.Position := 0;
TempStr.LoadFromStream(RStream);
RichEdit1.Lines.AddStrings(TempStr);
TempStr.Free;
RStream.Clear;
End;
End;