如何获得AReadLinesCount IdTCPClient

时间:2016-12-30 06:08:50

标签: delphi-xe7

有一个远程服务器。我想从他那里得到答案

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Clear;

  IdTCPClient1.Host := '163.158.182.243';
  IdTCPClient1.Port := 28900;
  IdTCPClient1.Connect;
end;

procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
  IdTCPClient1.IOHandler.Write('001');
  IdTCPClient1.IOHandler.ReadStrings(Memo1.Lines, 25, IndyTextEncoding(IdTextEncodingType.encOSDefault));
end;

该过程需要一个参数来指定 AReadLinesCount ,否则程序会停止响应

procedure TIdIOHandler.ReadStrings(ADest: TStrings; AReadLinesCount: Integer = -1;
  AByteEncoding: IIdTextEncoding = nil
  {$IFDEF STRING_IS_ANSI}; ADestEncoding: IIdTextEncoding = nil{$ENDIF}
  );

如何从收到的回复中 AReadLinesCount

1 个答案:

答案 0 :(得分:0)

服务器需要告诉您的客户何时停止阅读。有两种方法可以做到这一点:

  1. 它可以在发送行之前发送行数。您将首先读取该数字,然后读取后面指定的行数。

  2. 发送行后,它可以发送唯一的终止分隔符。您将在循环中读取行,直到到达终止符。

  3. 您尚未提供有关您尝试实施的协议的任何详细信息,因此没有人可以告诉您完全在您的代码中写入什么内容以使其发挥作用。