Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Befehle an server senden... (https://www.delphipraxis.net/14655-befehle-server-senden.html)

the_seed 13. Jan 2004 13:47


Befehle an server senden...
 
hi, kann mir jemand mal erklären wie ich befehle wie zb.
'showmessage('lol')' mithilfe eines idtcpclienten an den server schicken das die dann dort ausgeführt werden. Ich habe jetzt alles abgesucht aber nix gefunden, habe es mit 'writeln' probiert und am server dann mit "if" weiter verarbeitet aber ... :wall:
hoffentlich kann mir jemand weiterhelfen.

Phoenix 13. Jan 2004 14:14

Re: Befehle an server senden...
 
Poste mal ein wenig Code: was hast Du bisher?

Ein bisschen mehr Informationen können wir übrigens noch gebrauchen: Was willst Du genau bezwecken?

the_seed 13. Jan 2004 14:25

Re: Befehle an server senden...
 
ich habe mithilfe indy einen idtcp server u. clienten erstellt, ich mithilfe des clienten indem ich zb. auf einen bttn klicke den rechner herunterfahren, nur weiss ich jetzt nicht was ich bzw. wie ich die befehle an den server senden kann das der sie ausführt...

Phoenix 13. Jan 2004 14:43

Re: Befehle an server senden...
 
Du musst die Befehle zum einen erstmal in der Server-Komponente implementieren,
das heisst das Serverprogramm muss alle Befehle die Du fernsteuern willst schonmal für sich selber können.

Der Client schickt dann am besten nur noch eindeutige Strings über das Netzwerk weg, und der Server entscheidet dann anhand des Strings, welche Methode er aufrufen muss:

Delphi-Quellcode:
procedure TServer.DoAction(action: string);
begin
   if action = 'shutdown' then
      doShutdown
   else if action = 'beep' then
      doBeep;
end;

the_seed 13. Jan 2004 16:03

Re: Befehle an server senden...
 
Ich programmiere noch nicht sehr lange mit delphi, wie muss ich das dann angeben? kann ich das mit writeln ?

the_seed 13. Jan 2004 17:39

Re: Befehle an server senden...
 
mmmmhhh, ich hab wo gelesen das man da dann irgendwie strings senden kann!?! kann jemand ein kurzes und einfaches beispiel machen (das selbst ich es kapier) was ich im clienten und im server angeben muss das der server den befehl ausführt.

the_seed 14. Jan 2004 13:20

Re: Befehle an server senden...
 
Kann mir niemand helfen ? es ist seht wichtig für mich bitte macht jemand ein kurzes bsp.

@phoenix, ich glaube du kennst dich ein bisschen aus, kannst du es mir nicht kurz erklären?

Zortiander 29. Jan 2004 16:25

Re: Befehle an server senden...
 
Probiere es mit Indy-Komponenten, habe es gerad heute hinbekommen. Da kannst Du dann mit WriteLn usw. das abfangen. Im Prinzip funktioniert das so:

Client Code
Delphi-Quellcode:
...
{Hier willst Du dem Server ne Nachricht senden, Dein Indy TCP Client hat als Name CLient}
Client.WriteLn('shutdown')
...
Server Code
Delphi-Quellcode:
{Das geht in die OnExecute Routine rein}
...
command:= AThread.Connection.ReadLn;
{AThread wird in der Prozedur gleich übergeben, mit Connection greifst Du auf die Verbindung zu}
If command = 'shutdown' then
Begin
  Athread.Connection.Disconnect; {Den Client abhängen}
  doshutdown;
End;
Sollte so ungefähr funktionieren.

the_seed 30. Jan 2004 13:06

Re: Befehle an server senden...
 
Habs schon alleine hinbekommen trotzdem thx, weisst du wie man vom server aus strings sendet? das geht ja mit writln nicht!?

Zortiander 30. Jan 2004 13:13

Re: Befehle an server senden...
 
Das geht dann mit

Delphi-Quellcode:
{Hier ist die onExecute Routine des Servers}
...
AThread.Connection.WriteLn('message');
...
Beachte aber folgendes: Dein Client muss wissen, dass er was empfangen soll. Das sollte also ungefähr so im Client drin stehen:

Delphi-Quellcode:
{Wir sind im Client.}
...
Client.WriteLn('?001'); {Der Server verarbeitet das Ganze. Wir warten so lange}
{Ich benutze für die Kommunikation Zahlencodes, das geht ganz gut. In diesem Fall ist es ne Anfrage auf disconnect}
If Client.ReadLn = 'true' then Client.Disconnect;
...
Wenn der Server aber nix sendet, dann wartet der Client so lange im ich-bin-blockiert-Modus, bis Du ihm etwas sendest. Wenn Du ein Timeout einstellst, dann bekommt der User immernoch eine Fehlermeldung. Ich weis leider nicht, wie man die unterdrückt.
Es gibt auch WriteInteger und ähnliches, das siehst Du (zumindest unter Delphi 7) alles, wenn die automatische Vervollständigung des Codes zuschlägt, und Du aus der Liste alle Befehle suchen kannst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.
Seite 1 von 2  1 2      

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