我刚刚设法让客户端(IdTCPClient)根据需要将消息发送到服务器(IdTCPServer)。但是,如何让客户等待响应或适当地超时呢?

干杯,
阿德里安

最佳答案

客户端可以使用IOHandler.Readxxx方法读取响应,其中大多数方法都可以设置超时。也可以直接在IdTCPClient.IOHandler上指定读取超时。

procedure TForm1.ReadTimerElapsed(Sender: TObject);
var
  S: String;
begin
  ...
  // connect
  IdTCPClient1.Connect;

  // send data
  ...

  // use one of the Read methods to read the response.
  // some methods have a timeout parameter,
  // and others set a timeout flag

  S := IdTCPClient1.IOHandler.ReadLn(...);

  if IdTCPClient1.IOHandler.ReadLnTimedOut then
    ...
  else
    ...


end;


另请参阅:How can I wait for a string from a server with IdTCPClient?

10-08 00:16