![]() |
Indy-TCP-Commandos und die Replies
Hallo Leute,
ich bastele mir gerade einen TCPServer zusammen der einfache Kommandos ausführt. Dafür nutze ich die Indy-Kompos mit den CommandHandlern. Das geht ja auch alles was das ausführen des Kommandos betrifft eigentlich ganz gut, nur die Rückantwort des Servers kommt irgendwie nicht richtig beim Client an. Da scheint es so zu sein als wäre da ein verschieber drin. serverseitig setze ich die Antwort so.
Delphi-Quellcode:
Wenn ich dann so auf der clientseite auslese
procedure TForm1.IdTCPServer1TIdCommandHandler0Command(
ASender: TIdCommand); begin ASender.Reply.NumericCode := 2; ASender.Reply.Text.Text := 'Text2'; ASender.Reply.TextCode := 'TextCode'; ASender.SendReply; end;
Delphi-Quellcode:
kriege ich als NumericCode "0" und als Text die "2" raus.
nresult := IdTCPClient1.SendCmd('LogOffUser Terminator reServer', 2);
Reply := IdTCPClient1.LastCmdResult; Irgendwie habe ich den Verdacht das ich noch irgendwas grundsätzlich falsch mache. Kann mir jemand sagen was?! |
Re: Indy-TCP-Commandos und die Replies
Muss das Reply := IdTCPClient1.LastCmdResult; nicht in der Read-Methode deines Clients stehen? Weil er so schnell, wie die beiden Zeilen abarbeitet sind, doch nicht das Ergebnis vom Server erhält, oder?
|
Re: Indy-TCP-Commandos und die Replies
Hallo Stevie,
dre Client kommt aus der SendCmd-Routine erst dann raus wenn er das Ergebnis empfangen hat oder der Server ihn rausschmeißt. Zumindest ist er bei meinen ersten Versuchen immer dann darin kleben geblieben wenn ich serverseits nicht SendReply aufgerufen habe. |
Re: Indy-TCP-Commandos und die Replies
Wie gut, dass ich von RFC überhaupt keine Ahnung habe!
Aber egal, ich hab herausgefunden, dass die Codes mindestens dreistellig sein müssen, sonst gibt's dieses komische Problem, dass er das Ding falsch zerpfückt. Probier mal nen Code von 200 aus. Übrigens: - ist NumericCode das gleiche, wie TextCode, wenn sie kompatibel sind... (wenn du NumericCode setzt, wird TextCode gesetzt und umgekehrt) - kannst du den ReplyCode auch im OI dem CommandHandler zuweisen und der Reply wird automatisch zurückgeschickt (hab's ausprobiert) |
Re: Indy-TCP-Commandos und die Replies
Hallo Stevie,
meinen herzlichsten Dank. Wenn der Code allerdings dreistellig sein muß könnten die Hanseln von Indy aber auch direkt nen dreistelligen Default-wert schreiben. Zitat:
|
Re: Indy-TCP-Commandos und die Replies
:warn: Das mit dem dreistelligen Code ist ne inoffizielle Aussage von mir, weil es damit im Gegensatz zu ein und zwei Stellen funktioniert hat! :zwinker:
|
Re: Indy-TCP-Commandos und die Replies
Antworten die auf diese Weise (Trial and ERROR) entstanden sind habe ich immer noch am liebsten. Ich ziehe die Praxis (etwas funktioniert und keiner weis warum) der Theorie (müßte funktionieren, tuts aber nicht) immer noch vor.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz