Indy blockiert bei ReadXXX bis Daten vorhanden sind. Die Prüfung auf Connected ist nicht notwendig.
Indy wird eine
Exception auslösen, wenn das ReadByte wegen eines Timeouts oder einer fehlenden Verbindung scheitert.
Delphi-Quellcode:
TThread.CreateAnonymousThread(
procedure ()
var
C: Byte;
begin
while not Application.Terminated
do
begin
try
C := IdTCPClient1.Socket.ReadByte;
// mache was mit den Daten
except
on E:
Exception do
begin
// behandle Timeout, z.B. durch Neuaufbau der Verbindung
end;
end
else
end;
end).Start;