![]() |
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! |
AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
timestamp ?
|
AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
Zitat:
|
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:
|
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. ![]() 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 ![]() ![]() ![]() Rollo |
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: |
AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?
Schau doch mal, ob Dir
![]() (Im Detail kann ich die Angebote allerdings selbst nicht wirklich einordnen - außer "Kommunikationsguru" ;-)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz