Einzelnen Beitrag anzeigen

Zortiander

Registriert seit: 29. Jan 2004
13 Beiträge
 
#14

Re: Befehle an server senden...

  Alt 14. Mär 2004, 18:28
Im folgenden Gehe ich von hier aufgeführten Definitionen aus:

- Du hast einen Indy TCP Client, dessen Name "Client" ist
- Du hast einen Indy TCP Server, dessen Name "Server" ist
- beide laufen auf Deinem Rechner und haben Port 1050.


1. Schritt: Initialisation des Servers
Server.Active:= True; 2. Schritt: Client verbinden
Delphi-Quellcode:
Client.IP:= localhost;
Client.Port:= 1050;
Client.Connect;
3. Schritt: Im Server abfangen, wenn etwas gesendet wird. Dies steht in der OnExecute Routine
Delphi-Quellcode:

procedure TServerForm.ServerExecute(AThread: TIdPeerThread);
var
  Command: String;

begin
  Command:= AThread.Connection.ReadLn; {Liest die Zeile vom Client ein}

  {Jetzt das Kommando abfangen und verarbeiten. Hier ein Beispiel}  

  If Command[1] = 'Dthen MessageBox(0,Command,'Ausgabe',mb_ok+mb_taskmodal);

  {Eventuel eine Bestätigung zurücksenden}
  
  AThread.Connection.WriteLn('ok');
End;
4.Schritt: die Senderoutine im Client, die auch gleichzeitig auf eine Antwort wartet
Delphi-Quellcode:
Procedure TClientForm.ClientSent(what: String);
Begin
  Client.WriteLn(what);
  If Client.ReadLn = 'ok
  then MessageBox(0,'Gesandte Daten angekommen', 'ok', mb_ok+mb_taskmodal)
  else MessageBox(0,'Gesandte Daten nicht angekommen', 'Fehler', mb_ok+mb_taskmodal+mb_iconexclamation);
End;
Du solltest beachten, dass der Client so lange das Programm blockiert, bis er eine Antwrot bekommt, das kann evt. zuum sein, deshalb setze beim Client die ReadTimeOut auf 5000 (5s). So, ich hoffe das hilft Dir etwas weiter. Ich schick Dir nochmal die ganzen Source Codes und ein paar Beispiele.
  Mit Zitat antworten Zitat