Entwickler-Ecke

Internet / Netzwerk - UDPSockUtil Stabilitätsproblem


SimSam - Mi 06.07.11 15:10
Titel: UDPSockUtil Stabilitätsproblem
Hallo Allerseits,

Ich benutze UDPSockUtil von Narses um in einem LAN die Gegenwart eines Servers zu broadcasten.
Der Server verschickt z.B. alle 500ms einen "Hier bin ich" Broadcast mit SendText.

Habe nun einen Client, welcher in einer ListView alle Server auflistet.
Funktioniert soweit wunderbar, ich sehe auf jedem Client alle Server.

Das Problem:
Ich lass das alles laufen und komme nach zwei Stunden wieder. Die Clients sehen keine Server mehr, oder nicht mehr alle - sie 'verschwinden'.
Ich habe nun versucht den UDPSocket zu schliessen und neu zu öffnen. Ohne Erfolg. Ich muss die Server beenden (auf allen Rechnern) und neu starten. Dann geht's wieder ein paar Stunden gut.


Ist dies bekannt bzw. gelöst?

Sammy


Narses - Mi 06.07.11 17:13

Moin und :welcome: im Forum!

user profile iconSimSam hat folgendes geschrieben Zum zitierten Posting springen:
Ich lass das alles laufen und komme nach zwei Stunden wieder. Die Clients sehen keine Server mehr, oder nicht mehr alle - sie 'verschwinden'.
Ich habe nun versucht den UDPSocket zu schliessen und neu zu öffnen. Ohne Erfolg. Ich muss die Server beenden (auf allen Rechnern) und neu starten. Dann geht's wieder ein paar Stunden gut.
cu
Narses


BenBE - Mi 06.07.11 17:14

Was sagt Wireshark? Werden überhaupt noch Pakete gesendet?


SimSam - Do 07.07.11 13:23

Habe mir Wireshark geholt und werde das ausprobieren.
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
  • Welche Delphi-Version?
  • Hört sich so an, als ob du da nicht "richtig" ereignisorientiert rangehst, da ist die WSA schonmal etwas zickig zeig mal den Code vom Server und vom Client, der den UDPSockUtil bedient
  • Warum spammst du dein Netz dermaßen zu?!


BenBE - Do 07.07.11 14:26

user profile iconSimSam hat folgendes geschrieben Zum zitierten Posting springen:
Ich versuche ausserdem über die Paketverluste die Verbindung zu beurteilen. Also brauche ich was zu zählen - je mehr desto besser. Wenn ganze Filme im Internet rumgeschoben werden finde ich 2 UDP-Pakete pro Sekunde in einem LAN gar nicht so viel...

Dafür gibt es bessere Möglichkeiten.

Z.B. nutzen wir beim Freifunk Chemnitz für die Bewertung der Link Quality auch UDP, dort werden aber so alle 5-10 Sekunden mal Pakete verschickt (Broadcast). Bei 20 Nodes im lokalen Netz kommen da auch gern mal beachtliche Bandbreiten von 10KB/s zustande, obwohl OLSR schon recht gut komprimiert. Dennoch schaffen wir es nicht, bei dieser Last das Netz sinnvoll über eine GPRS-Verbindung an ein Remote-VPN zu koppeln, weil einfach schon der Upstream allein mit den ständigen Broadcasts zu ist.

Die Qualitätserkennung wird übrigens ganz einfach realisiert: In jedem Paket steht ne Seriennummer, die für jedes Paket inkrementiert wird. Wenn man sich dann für jeden Client merkt, was die vorige Seriennummer war und diese mit der neuen Vergleicht, bekommt man den Paket Loss raus. Zusätzlich steht in den Paketen noch das Timing drinnen, wann mit dem nächsten Datenpaket zu rechnen ist. Nimmt man das zusammen, kann man auch mit nur einem Paket alle 5 Sekunden extrem gut die Leitungsqualität messen.

Generell gilt aber: Broadcasts vermeiden, wo's geht (in unserem Fall geht's nicht, weil wir anhand der Broadcasts die Netztopologie erkunden müssen).