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] = 'D' then 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.