Hallo,
ich habe ein Problem mit den
Indy-Komponenten TIdCmdTCPClient und TIdCMDTCPServer.
Ich habe eine Client/Server-Applikation, der Client soll vom Server eine Liste mit Daten abrufen. Das erste Senden eines Befehls an den Server mittels TCPClient.SendCmd( 'GETDATA', 200 ) funktioniert ohne Probleme und liefert die Daten. Wenn ich jedoch den selben Auftruf nochmal mache, blockiert der SendCmd-Aufruf, beim Server kommt auch kein Befehl an. Ich habe in die Quellen von
Indy getraced und gesehen, daß der Befehl mittels write zu Server gesendet wird, dort kommt er aber nicht an. Der nachfolgende Read, welcher auf die Antwort des Servers warten, blockiert.
Wenn ich nun einen Readtimeout setze, dann schlägt dieser nach der angegebenen Zeit an. Der nächste Aufruf von SendCmd funktioniert dann wieder, dann wieder nicht, dann wieder usw.
Wo liegt hier das Problem?
Client:
Delphi-Quellcode:
TCPClient.SendCmd( 'GETDATA', 200 );
und dann Auswerten von TCPClient.LastCmdResult.Text
Server:
Delphi-Quellcode:
procedure TformMain.OnCommandHandler_GetData(ASender: TIdCommand);
begin
ASender.Reply.SetReply( 200, 'data for client' );
end;
danke,
MonsterJoe