anbei eine Codesequenz zum Senden eines Commands an einen
TCP Server und das Zurücklesen
der Antwort des Servers in eine Datei
bei IdTCPClient1 ist der Timeout auf -1 gesetzt, damit müsste die Kommunikation zwischen Client und Server doch eigentlich auch dann noch klappen,
wenn der Server mal längern zum Berechnen der Antwortdatei benötigt????
Delphi-Quellcode:
logfile:
String;
AStream: TFileStream;
IdTCPClient1.IOHandler.WriteLn(MyCMDString);
///
/// save the transmited command to the string list
///
// https://stackoverflow.com/questions/7989133/how-can-i-wait-for-a-string-from-a-server-with-idtcpclient
// if IdTCPClient1.IOHandler.InputBufferIsEmpty then ShowLogInfo('TCP/IP Transfer failed , InputBufferIsEmpty ' );
AStream := TFileStream.Create(logfile, fmCreate);
try
IdTCPClient1.IOHandler.LargeStream := True;
IdTCPClient1.IOHandler.ReadStream(AStream, -1, False);
finally
AStream.Free;
Wenn ich in meiner App die Strings manuell aus einer Listbox auswähle und über diese Funktion an den Server schicke funktioniert alles auch,
Code also OK.
Wenn ich in der App eine Batch Routine aufrufe, welche viele Strings dann diese Funktion schickt klappt es nicht mehr, woran liegt dies ?