Autor Beitrag
SimSam
Hält's aus hier
Beiträge: 2


RAD Studio 2010
BeitragVerfasst: Mi 06.07.11 15:10 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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.
  • Welche Delphi-Version?
  • Hört sich so an, als ob du da nicht "richtig" ereignisorientiert rangehst, da ist die WSA schonmal etwas zickig :arrow: zeig mal den Code vom Server und vom Client, der den UDPSockUtil bedient :les:
  • Warum spammst du dein Netz dermaßen zu?! :shock:
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 06.07.11 17:14 
Was sagt Wireshark? Werden überhaupt noch Pakete gesendet?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
SimSam Threadstarter
Hält's aus hier
Beiträge: 2


RAD Studio 2010
BeitragVerfasst: 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?!
  • Delphi 2010 professional
  • Kommt noch - ist zuhause
  • 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...
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.