![]() |
TIdCmdTCPServer: Wie funktioniert das?
Hallo,
wie ich im andern Thread geschildert habe, habe ich einen Dienst der sich mit der TIdCmdTCPServer Komponente an den Port 4585 hängt. Ich kann mich auch mit dem Client verbinden und das TCPView Tool von M$ zeigt mir auch an das eine Verbindung zwischen beiden Programmen besteht. Ich habe jetzt auf dem Server einen CommandHandler "login" erstellt und ein Ereignis zugewiesen. Wenn ich beim Client jetzt jedoch SendCmd('login') mache hängt der Client an dieser Stelle. Der Server bekommt von alledem irgendwie garnichts mit. Ich logge das OnExecute, das OnCommand und noch einige Ereignisse mehr mit, bekomme aber null Input. Also was für Optionen sind notwendig um das als Mini-Beispiel mal zum Laufen zu kriegen? Worauf muss ich achten? :angel: |
Re: TIdCmdTCPServer: Wie funktioniert das?
Keiner en Plan was ich alles einstellen muss? :wiejetzt:
|
Re: TIdCmdTCPServer: Wie funktioniert das?
Ich habe genau das gleiche Problem gehabt, dass du auch hast und wäre an einer Lösung ebenso interessiert. Habe das vor einiger Zeit auch schon im Forum gepostet, aber es scheint niemand mit dem CmdServer zu arbeiten :cry:
|
Re: TIdCmdTCPServer: Wie funktioniert das?
Ach hab die Lösung:
Die Firewall blockt :wall: Wenn ich ne normale Anwendung mache kommt ne Meldung ob die Firewall blocken soll oder nicht. Wenn ich das ganze in einen Dienst packe kommt keine Meldung :wall: Edit:Mist zu früh gefreut :wall: an der Firewall liegts dochnnciht, die iss jetz aus aber kommt trotzdem nix an |
Re: TIdCmdTCPServer: Wie funktioniert das?
HA! Jetz gehts :D
Ich hatte folgende Methode aufgerufen, wenn ich den Aufruf ausklammere gehts:
Delphi-Quellcode:
Also wo hab ich hier den Fehler?
function TMyService.CheckProcessRunning:Integer;
var le : TListEnumerator; c : TIdContext; begin Result:=0; le:=IdCmdTCPServer1.Contexts.LockList.GetEnumerator; while le.moveNext do begin c:=TIdContext(le.Current); c.Connection.SendCmd('test'); if c.Connection.LastCmdResult.NumericCode = 200 then inc(Result); end; IdCmdTCPServer1.Contexts.UnlockList; end; |
Re: TIdCmdTCPServer: Wie funktioniert das?
Es geht? Wie hast du das jetzt gemacht?
Kannst du nicht ein Minimal-Beispiel hier attachen? Ich hatte nämlich schon aufgegeben... |
Re: TIdCmdTCPServer: Wie funktioniert das?
Liste der Anhänge anzeigen (Anzahl: 1)
OK, hier mal mein funktionierendes Beispiel, Server ist ein Dienst und Client eine Formularanwendung
Evtl muss die Firewall deaktiviert oder das Programm dort als Ausnahme eingefügt werden. Edit: Das einzige Problem was ich hab ist, dass sich der Client ab und zu aufhängt, aber der Server läuft |
Re: TIdCmdTCPServer: Wie funktioniert das?
Hmm.. sehr seltsam.
Das erste Übertragen funktioniert problemlos. Beim zweiten Versuch gibts ein ReadTimeOut und danach funktioniert es jedesmal :gruebel: Was passiert denn da beim zweiten Versuch? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 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