Autor Beitrag
Tintenblut
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 39
Erhaltene Danke: 2



BeitragVerfasst: Di 27.11.07 09:15 
Hallo Community

Ich sitze immernoch an dem UDPSockUtil von Narses und habe etwas gefunden was ich nicht recht verstehe.

Mein derzeitiges Problem:

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?

Gibts es hier vielleicht die Möglichkeit eine Fehlermeldung zu erhalten wenn die Nachricht nicht beim Empfänger ankommt?

LG
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 27.11.07 10:47 
Moin!

user profile iconTintenblut 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... ;)

user profile iconTintenblut 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. :idea: ;)). 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.

user profile iconTintenblut 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). :idea:

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. :idea: 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.
Tintenblut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 39
Erhaltene Danke: 2



BeitragVerfasst: Di 27.11.07 11:59 
Moin moin

Danke Narses für die schnelle Antwort.


user profile iconNarses hat folgendes geschrieben:
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.


Meine Broadcast-Eigenschaft ist doch aber auf 'False' gesetzt. :?!?:
Gibt es keine Möglichkeit die Broadcastfunktion zu disablen? Das wenn der Host nicht gefunden wurde, es auch kein Broadcast gesendet wird?


LG

~
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 27.11.07 13:14 
Moin!

user profile iconTintenblut hat folgendes geschrieben:
Meine Broadcast-Eigenschaft ist doch aber auf 'False' gesetzt.
Ja, vorher mag das so gewesen sein ;) nach dem DNS-Lookup stellt die Kompo das aber automatisch ein, weil die ermittelte IP 255.255.255.255 (INADDR_ANY) ist -> das führt dann zum Broadcast. :idea:

user profile iconTintenblut hat folgendes geschrieben:
Gibt es keine Möglichkeit die Broadcastfunktion zu disablen? Das wenn der Host nicht gefunden wurde, es auch kein Broadcast gesendet wird?
Du kannst zum einen den Host vorher anpingen, dann weißt du auf jeden Fall, dass er aktiv ist. Ansonsten kannst du auch den Hostnamen in der Kompo setzen und anschließend .Broadcast auf TRUE prüfen und den Versand ggfs. abbrechen und wieder auf FALSE setzen. :nixweiss:

Wie gesagt: ich denke schon länger darüber nach, eine Option einzubauen, die genau diesen Fall anders abwickelt. :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.