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