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.
![Coder](images/smilies/icon_user.gif)
1. Schritt: Initialisation des Servers
Server.Active:= True;
![Coder](images/smilies/icon_user.gif)
2. Schritt: Client verbinden
Delphi-Quellcode:
Client.IP:=
localhost;
Client.Port:= 1050;
Client.Connect;
![Coder](images/smilies/icon_user.gif)
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;
![Coder](images/smilies/icon_user.gif)
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
![Uaaargs!](images/smilies/barf.gif)
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.