برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

ارسال دستور به سرور و دریافت پاسخ با tcpclient

برای کار با 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

برای ارسال و دریافت اطلاعات از طریق 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;