برای کار با tcpclient دستورات زیر را وارد میکنیم
procedure TForm1.btnSendClick(Sender: TObject);
var
I: Integer;
begin
TcpClient1.RemoteHost := edtRemoteHost.Text;
TcpClient1.RemotePort := edtRemotePort.Text;
if not TcpClient1.Connected then
TcpClient1.Connect ;
i:= TcpClient1.Sendln(Trim(statement.Text));
TcpClient1.Receiveln;
end;
procedure TForm1.TcpClient1Receive(Sender: TObject; Buf: PAnsiChar;
var DataLen: Integer);
var s:string;
begin
SetLength (s, DataLen);
move (Buf ^, s [1], DataLen);
s:= StringReplace (s, #$0,#$13, [rfReplaceAll]);
memRecv.Lines. Add( s);
TcpClient1.Active:=False;
end;
همچنین از این دستور برای ارسال رشته به صورت استریم
Function StringToStream(const AString: string): TStream;
begin
Result := TStringStream.Create(AString);
end;
--------------------------
procedure TForm1.btnSendClick(Sender: TObject);
begin
TcpClient1.RemoteHost :='192.168.1.168';
TcpClient1.RemotePort :='23768';
if not TcpClient1.Connected then
TcpClient1.Connect ;
TcpClient1.SendStream( StringToStream('readl'));
TcpClient1.Receiveln;
end;
برای ارسال و دریافت اطلاعات از طریق indytcpclient به صورت زیر عمل میکنیم . port , host را تنظیم میکنیم و من دستور مورد نظر را در ادیت وارد کردم و ارسال میکنم و پاسخ را با دستور readchar دریافت کردم
var ch:char;
str:string;
begin
IdTCPClient1.host:='192.168.1.25';
IdTCPClient1.port:=8080;
IdTCPClient1.Connect(300);
IdTCPClient1.WriteLn(edt1.Text);
ch:=IdTCPClient1.ReadChar;
while ch<>'$' do
begin
str:=str+ch;
ch:=IdTCPClient1.ReadChar;
end;
mmo1.Lines.Add(str);
IdTCPClient1.Disconnect();
و یا از کد زیر استفاده شود
var
str:string;
begin
IdTCPClient1.host:='192.168.1.168';
IdTCPClient1.port:=23768;
IdTCPClient1.Connect(300);
IdTCPClient1.Write(edit1.Text);
Sleep(1000);
str:=IdTCPClient1.CurrentReadBuffer() ;
Memo1.Lines.Add(str);
IdTCPClient1.Disconnect();
end;