Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   IdUDPServer: Daten von vielen verschiedenen Clients empangen? (https://www.delphipraxis.net/188892-idudpserver-daten-von-vielen-verschiedenen-clients-empangen.html)

romber 17. Apr 2016 08:48

IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
Hallo!

Ich habe einen TIdUDPServer, der extrem zeitkritische Sonsorendaten von über zwei Dutzend Clients gleichzeitig empfangen soll. Angesichts der Tatsache, dass mehrere Pakete von unterschiedlichen Clients im Puffer landen können und dazu möglicherweise noch fragmentiert, frage ich mich wie ich die Pakete am besten auseinander halten und auslesen soll, damit so viele Daten wie möglich sicher empfangen werden. Ich bin über die Nachteile von UDP informiert und mir durchaus bewusst, dass möglicherweise nicht alle Pakete richtig ankommen werden und nehme das auch in Kauf. Es handelt sich um einen Flut von Daten, wobei ein oder anderer Paket ruhig mal verloren gehen kann, ohne den gesamten Datenbild wesentlich zu beeinträchtigen. Damit das auch nicht passiert, müssen aber etwa 80% der Daten sicher ankommen. Mein Ziel ist also so schnell wie möglich so viele Datenpakete wie möglich sicher zu empfangen. Performance ist dabei von sehr großer Bedeutung!

- Wie halte ich die Datenpakete von verschieden Clients am besten auseinander?
- Wie vermeide ich die Fragmentierung der Datenpakete?
- Falls die Fragmentierung nicht ganz zu vermeiden ist, wie füge ich die fragmentierten Pakete am besten zusammen?

Ich muss auch erwähnen, dass die einzelnen Pakete unterschiedlich groß sein können, die Durchschnittsgröße bei etwa 5 Kb.

Danke für jeden Tipp!

Rollo62 17. Apr 2016 08:54

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
timestamp ?

romber 17. Apr 2016 18:46

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
Zitat:

Zitat von Rollo62 (Beitrag 1335799)
timestamp ?

Ok, und wie hilft es mir weiter? Verstehe nicht ganz, was damit gemeint ist.

BUG 17. Apr 2016 19:09

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
Normalerweise solltest du die Clients mithilfe derer IP/Port auseinander halten können. Fragmentierte IP-Pakete musst du nicht selbst zusammensetzen, alles was du selbst fragmentierst natürlich schon. Dazu brauchen die Pakete auf Anwendungsebene eine ID (z.B. eine Sequenznummer) und die Angabe, die sagt das wievielte Teilpaket das Paket ist.

Zitat:

Zitat von romber (Beitrag 1335815)
Verstehe nicht ganz, was damit gemeint ist.

Damit kann ich auch nichts anfangen :mrgreen:

Rollo62 17. Apr 2016 20:54

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
Pakete könnten u.U. nicht in der richtigen Reihenfolge ankommen, in grossen Netzen oder Internet.
Zumindest dabei hilft dir der Timestamp weiter.
http://stackoverflow.com/questions/2...ng-udp-packets
Timestamp ist auch eine Art eindeutige Sequence number.

Wenn dir egal ist das Pakete verloren gehen spielt das weitere ja keine Rolle, aber ein Paketcounter wäre
auch sinnvoll, also jedes neue Paket bekommt eine Sequenznummer
https://books.google.de/books?id=-3q...page&q&f=false

http://www.ietf.org/proceedings/44/I...ble-udp-00.txt

http://www.streamingmedia.com/Articl...col-85316.aspx

Rollo

BUG 17. Apr 2016 22:04

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
Ah, gut: Im Kontext von RTP macht der Timestamp als Sequenznummer Sinn, da er sich auf eine Position im Inhalt bezieht.
Das RUDP RFC und der Streamingmedia-Artikel sehen ziemlich interessant aus :thumb:

stahli 18. Apr 2016 12:09

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
 
Schau doch mal, ob Dir http://www.delphipraxis.net/members/44466-mjustin.html weiter helfen kann.

(Im Detail kann ich die Angebote allerdings selbst nicht wirklich einordnen - außer "Kommunikationsguru" ;-))


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf