Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesucht (https://www.delphipraxis.net/105034-gutes-tutorial-zur-datenuebertragung-mit-indy-tcp-ip-gesucht.html)

mathis.h 14. Dez 2007 11:47


Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesucht
 
Hallo!
Wie die Überschrift schon verrät, suche ich ein wirklich gutes Tutorial zur TCP/IP-Komponente von Indy (Server + Client), speziell, wie man damit Daten überträgt.
Kennt jemand da was gutes??

Gruß
Mathis

halinchen 14. Dez 2007 13:17

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
Ein gutes Tutorial kenne ich eigentlich nicht.

Aber es sollte einen Ordner Demos bei den Indys dabei gewesen sein.
Da kannst du dir angucken was die alles machen.
Und sonderlich schwer finde ich es nicht., da die meisten Prozeduren selbsterklärend sind.

alzaimar 14. Dez 2007 13:23

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
Wo drückt denn der Schuh? Denn eigentlich ist es popeleinfach.

Nachtrag: Popeleinfach ist es natürlich nur dann, wenn man es 1x gemacht hat. Zeig mal, was du bisher versucht hast.

mathis.h 14. Dez 2007 14:04

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
OK, ein bisschen was hab ich jetzt schon hinbekommen. Ich verwende momentan den mitgelieferten BasicClient und versuche einen Server zu schreiben, zu dem sich der Client verbinden kann. Der Server soll dann erstmal nicht mehr machen, als die IP des Clients auszugeben.
Das verbinden funktioniert schon, auch die Procedure ClientConnect wird nach dem Verbinden aufgerufen. Nur gibt der mir leider keine IP aus, sondern nur nen leeres ShowMessage-Fenster.

Hier mein Code:
Delphi-Quellcode:
procedure TForm1.ClientConnect(AThread:TIdContext);
begin
  ShowMessage (AThread.Connection.Socket.Host);
end;

procedure TForm1.btnStartStoppClick(Sender: TObject);
var
  Binding: TIdSocketHandle;
begin
  if (IdTCPServer1.Active) then begin
    IdTCPServer1.Active := false;
    btnStartStopp.Caption := 'Server starten';
  end
  else begin
    Binding := IdTCPServer1.Bindings.Add;
    Binding.IP := '192.168.0.2';
    Binding.Port := 8080;
    IdTCPServer1.OnConnect := ClientConnect;
    IdTCPServer1.Active := true;
    btnStartStopp.Caption := 'Server stoppen';
  end;
end;
Wie bekomme ich jetzt die IP des Clients heraus?

PS: Ich teste das ganze momentan lokal, dh. der Server läuft aufm selben Rechner mit der selben IP wie der Client, aber das dürfte ja eigentlich nicht das Problem sein, oder??

halinchen 14. Dez 2007 14:09

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
Ich habe gleich mal ein Tutorial geschrieben.

http://www.delphipraxis.net/internal...=819523#819523

Das kannst du dir ja mal ansehen.

//edit: Im Server geht das so:
Delphi-Quellcode:
AContext.Binding.PeerIP

mathis.h 14. Dez 2007 14:25

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
Cool, vielen, vielen Dank für dieses übersichtliche Tutorial. Habe bisher nämlich immer nur seitenlange und extrem umfangreiche Tutorials gefunden und da sieht man als Anfänger in Sachen TCP/IP echt nicht durch. Aber das sieht ja echt einfach aus. Werds gleich mal ausprobieren.

Eine Frage hätte ich noch:
Jetzt weiß ich zwar, wie ich dem Server nen String schicke. Interessant wäre jetzt noch, wie ich den Server zum Antworten bekomme (ich schätze mal mit WriteLn im IOHandler oder so??) und vor allem, welches Ereignis ich im Client setzen muss, damit dieser diese Antwort entgegennimmt??

halinchen 14. Dez 2007 14:32

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
Zitat:

Zitat von mathis.h
Interessant wäre jetzt noch, wie ich den Server zum Antworten bekomme (ich schätze mal mit WriteLn im IOHandler oder so??) und vor allem, welches Ereignis ich im Client setzen muss, damit dieser diese Antwort entgegennimmt??

Der Client hat leider kein Ereignis. Man müsste in einem Timer immer z.B. "Client.IOHandler.Readln" aufrufen.

Server schreibt:
Delphi-Quellcode:
AContext.Connection.IOHandler.Writeln('TEXT');

mathis.h 14. Dez 2007 14:34

Re: Gutes Tutorial zur Datenübertragung mit Indy TCP/IP gesu
 
OK, dann werde ich warscheinlich am Besten auf jede Seite nen Server und nen Client reinpacken, um Verzögerungen zu vermeiden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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