Lesen von Daten mit TIdUDPServer

Möchte ich zum Lesen von Daten aus einem elektronischen Gerät, das Daten sendet mein PC über UDP. Ich programmiert habe einen UDP-server in Delphi. Eine Ausnahme tritt in der Klasse EIdSocketError (Fehler #10049). Hier ist mein code:

procedure TForm1.Button1Click(Sender: TObject);
begin
   IdUDPServer1.Bindings.add.IP := '192.168.1.1';  //Electronic device ip
   IdUDPServer1.Bindings.add.Port:= 49152;         //Electronic device port   
   IdUDPServer1.OnUDPRead:= UDPRead;
   IdUDPServer1.Active:=True;

end;

procedure TForm1.UDPRead (Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
   bytes_received: integer;
begin
   bytes_received:=AData.size;
end;

Was mache ich falsch?

Vielen Dank im Voraus

  • Ich denke, weisen Sie das Ergebnis der IdUDPServer1.Bindungen.hinzufügen einer Variablen zu, und legen Sie dann seine IP-Adresse und Port. Wenn ich mich richtig erinnere, was Sie tun ist das hinzufügen von zwei Bindungen, eine mit IP und einem Port.
  • Ich änderte den code wie folgt, aber der Fehler ist der gleiche... ich bin angenommen, dass die Bindung ip muss die ip von dem elektronischen Gerät (nicht die PC ip): var myaddress:TIdSocketHandle; begin myaddress:=IdUDPServer1.Bindungen.Hinzufügen; myaddress.IP:= '192.168.1.1'; myaddress.Port:=49152; IdUDPServer1.Bindungen.Hinzufügen.IP:=myaddress.IP; IdUDPServer1.Bindungen.Hinzufügen.Port:=myaddress.Port; end;
  • Nein, mit Bindungen können Sie angeben, auf welches ethernet-adapter, die Sie hören, für UDP-Pakete.
  • Ich habe verändert die bind-ip-Adresse '0.0.0.0' (und auch '127.0.0.1'), aber ich weiterhin empfangen keine Daten vom externen Gerät... Ist da irgendein Fehler in meinem code?
  • Bitte aktualisieren Sie Ihre Frage mit den neuesten code, den Sie verwenden.
InformationsquelleAutor user1361263 | 2012-05-14
Schreibe einen Kommentar