Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UDP Indy10 - Daten austauschen (https://www.delphipraxis.net/143337-udp-indy10-daten-austauschen.html)

OlafSt 13. Nov 2009 16:13


UDP Indy10 - Daten austauschen
 
Hallo Leute,

ich seh mal wieder den Wald nicht...

Simples Problem: Ich will mit einer Anwendung kommunizieren via UDP. Ich benutze hier Delphi2009 und Indy10, ergo eine TIdUDPClient-Kompo.

Daten senden an die andere Anwendung funktioniert wunderbar. Doch diese Anwendung schickt mir eine Antwort zurück - die ich nie erhalte.
Da es keine Events im TIdUDPClient gibt, die mir signalisieren, das ich was bekommen habe, polle ich per Timer-Event. Aber ich erhalte nie Daten. Was mache ich falsch ?

Wenn Verweise auf andere UDP-Komponenten als Indy10, dann nur welche, die auch mit D2009 laufen ;)

Die entscheidenden Codestellen:

Delphi-Quellcode:
//Schalte unsere Lampe auf grün, wenn Verbindung ok
procedure TTUT_Main.IdUDPClient1Connected(Sender: TObject);
begin
     IPStatus.FillColor:=clLime;
end;

//Lampe auf rot, wenn Verbindung weg
procedure TTUT_Main.IdUDPClient1Disconnected(Sender: TObject);
begin
     IPStatus.FillColor:=clRed;
end;

//Anzeige der Stati, die Indy uns mitteilt (Kommt eh nur Connect, Disconnect, Resolve etcpp)
procedure TTUT_Main.IdUDPClient1Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string);
begin
     RzMemo1.Lines.Add('UDPClient: '+AStatusText);
end;

//Polling des UDP. Der Timer läuft alle 100ms hier durch - es kommt nur nie was an :-(
procedure TTUT_Main.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle);
var
   s: string;
   i: integer;
begin
     s:='';
     for i := 0 to Length(AData) - 1 do
         s:=s+chr(AData[i]);
     RzMemo1.Lines.Add('Received: '+s);
end;
x'posted @ DF

OlafSt 16. Nov 2009 08:09

Re: UDP Indy10 - Daten austauschen
 
Gerade gemerkt: Ignoriert bitte "IdUDPServer1UDPRead" - das ist ein Trümmer von einem Experiment.

Der Timer-Event sieht so aus:

Delphi-Quellcode:
procedure TTUT_Main.Timer1Timer(Sender: TObject);
var
   s: string;
begin
     if not IDUDPClient1.Connected then exit;

     s:=IdUDPClient1.ReceiveString(10);
     if s='' then exit;
     RzMemo1.Lines.Add('Received: '+s);

end;

Nersgatt 16. Nov 2009 08:30

Re: UDP Indy10 - Daten austauschen
 
Crossposts bitte markieren
http://www.delphi-forum.de/viewtopic...=584468#584468

OlafSt 16. Nov 2009 10:11

Re: UDP Indy10 - Daten austauschen
 
Zitat:

Zitat von OlafSt
x'posted @ DF

Hab ich. Nur keinen Link draus gemacht. Verzeihung ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz