Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   UDP-Versand mittels TUdpSockUtil - Probleme mit Error 10054 (https://www.delphipraxis.net/169221-udp-versand-mittels-tudpsockutil-probleme-mit-error-10054-a.html)

hyype 5. Jul 2012 14:46

UDP-Versand mittels TUdpSockUtil - Probleme mit Error 10054
 
Hallo Community!

Ich habe (wiedermal) ein Problem:
Ich habe eine TUdpSockUtil-Komponente, diese hat einen LocalPort, einen RemoteHost und einen RemotePort.
Diese dient sowohl dazu, dass verschiedene andere Programme dem Programm eine Msg schicken können,
als auch zum Versand von Msg an diese anderen Programme.
Dabei läuft er eine Liste mit IPs und Ports durch, setzt RemoteHost und RemotePort und ruft SendBuf auf,
ich geb euch mal ein Pseudo-Bsp ^^

Delphi-Quellcode:
  for i := 0 to ReceiverList.count - 1 do
  begin
    UdpSockUtil1.remotehost := ReceiverList[i].ip;
    UdpSockUtil1.remoteport := ReceiverList[i].port;
//    if not UdpSockUtil1.Listen then
//    begin
//      UdpSockUtil1.close;
//      UdpSockUtil1.open;
//    end;
//    if UdpSockUtil1.Listen then
    UdpSockUtil1.SendBuf(xBuf[0],length(xbuf));
  end;

(der auskommentierte Code war testweise einkommentiert ohne etwas zu bringen)
Mein Problem dabei ist folgendes:
Wenn eins der Programme, denen ich eine Msg schicken will, nicht läuft,
erhalte ich einen Error 10054, was mich ja auch nicht sonderlich verwundert. ;)
Was mich dagegen wundert ist:
Wenn der Fehler ein paar mal gekommen ist, empfängt das Programm keine Msgs der anderen Programme mehr.
Also entweder müllt sich ein Buffer zu, den ich nicht freigeben kann oder .. ka, vlei macht Windows den Port dicht,
von dem ich sende, wenn ich ins Nirvana sende, ich weiß es nicht, auf jeden Fall ist es Mist,
weil wenn eins der Programme mal abkackt, ist das nicht weiter schlimm,
dann wird es von einem Überwachungsprogramm ggf abgeschossen und neugestartet,
aber dass ein anderes Programm, was noch läuft, keine Msgs mehr empfangen kann deswegen, ist ein kritischer Zustand!
Hat jmd eine Idee?

Klaus01 5. Jul 2012 15:00

AW: UDP-Versand mittels TUdpSockUtil - Probleme mit Error 10054
 
Hallo,

mich wunder es schon, dass diese Meldung kommt.
UDP ist ein verbindungsloses Protokoll, d.h. es schert sich nicht darum
ob die Gegenstelle vorhanden ist.

Kannst Du die Exception abfangen (try - except -end)?

Grüße
Klaus

hyype 5. Jul 2012 15:31

AW: UDP-Versand mittels TUdpSockUtil - Probleme mit Error 10054
 
der error kommt nicht hoch, es wird halt ein onerror-event aufgerufen, wo der fehler mitgeloggt wird

und:
ich habe es gefunden:
wenn der fehler kommt, wird das receive-event ausgelöst und die länge dessen, was er empfängt, ist 1
und dort stand vor dem auslesen des buffers if receivelength < 2 then exit;
er hat also schlicht und ergreifend den buffer nicht geleert und der war zugemüllt...
zugegeben dumm, das nicht schon eher gesehen zu haben...

SORRY FÜR DEN POST!!!


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