Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdCmdTCPServer: Wie funktioniert das? (https://www.delphipraxis.net/119063-tidcmdtcpserver-wie-funktioniert-das.html)

Angel4585 20. Aug 2008 12:52


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:

Angel4585 22. Aug 2008 07:19

Re: TIdCmdTCPServer: Wie funktioniert das?
 
Keiner en Plan was ich alles einstellen muss? :wiejetzt:

Codewalker 22. Aug 2008 08:34

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:

Angel4585 22. Aug 2008 09:09

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

Angel4585 22. Aug 2008 10:04

Re: TIdCmdTCPServer: Wie funktioniert das?
 
HA! Jetz gehts :D

Ich hatte folgende Methode aufgerufen, wenn ich den Aufruf ausklammere gehts:
Delphi-Quellcode:
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;
Also wo hab ich hier den Fehler?

Codewalker 22. Aug 2008 11:46

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...

Angel4585 22. Aug 2008 12:06

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

Angel4585 22. Aug 2008 13:07

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 10:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz