Moin!
Tintenblut hat folgendes geschrieben: |
| Ich sitze immernoch an dem UDPSockUtil von Narses und habe etwas gefunden was ich nicht recht verstehe. |
Dann wollen wir mal sehen...
Tintenblut hat folgendes geschrieben: |
Ich habe einfach testweise als LocalHost irgendetwas eingegeben. Eigentlich hatte ich eine Fehlermeldung beim Senden der Nachricht erwartet, oder dass einfach gar nichts passiert.
Stattdessen bekomme ich die Nachricht nach kurzer Zeit selbst.
Sendet das Programm die Nachricht als Broadcast wenn er den Empfänger nicht findet? |
Ja, wenn du einen DNS-Lookup von der Kompo machen lässt und der Host kann nicht eindeutig aufgelöst werden, dann wird ein Broadcast gemacht (genauer: der UdpSockUtil schaltet in den Broadcast-Modus und muss ggfs. manuell da wieder rausgeholt werden, Stichwort: .Broadcast-Eigenschaft; steht auch alles so in der Doku.

). Ich denke schon länger über eine neue Version der Kompo nach, wo ein DNS-Lookup-Failure alternativ über das OnError-Event abgewickelt werden kann, mal sehen.
Zusammengefasst erklärt: du trägst einen Host ein, den es nicht gibt, der DNS-Lookup liefert einen Fehler (hier ist die kurze Wartezeit begründet), der TUdpSockUtil schaltet darauf hin in den Broadcast-Modus und sendet dann (auch) an sich selbst.
Tintenblut hat folgendes geschrieben: |
| Gibts es hier vielleicht die Möglichkeit eine Fehlermeldung zu erhalten wenn die Nachricht nicht beim Empfänger ankommt? |
Das ist bei UDP grundsätzlich nicht vorgesehen, hat also auch nix mit der Kompo zu tun (die Aussage ist so nicht soo ganz korrekt, es gibt da eine ICMP-Signalisierung, aber das führt hier zu weit weg; jedenfalls sollte man es so betrachten).
Wenn du eine Empfangskontrolle brauchst, musst du festlegen, dass der Empfänger innerhalb einer bestimmten Zeit antwortet, bei einem Timeout ist dann klar: er hat nix empfangen.

Dann allerdings kannst du auch gleich auf TCP aufsetzen, da ist das schon automatisch mit drin.
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.