AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke IdUDPServer: Daten von vielen verschiedenen Clients empangen?

IdUDPServer: Daten von vielen verschiedenen Clients empangen?

Ein Thema von romber · begonnen am 17. Apr 2016 · letzter Beitrag vom 18. Apr 2016
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.163 Beiträge
 
Delphi 10 Seattle Professional
 
#1

IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 17. Apr 2016, 08:48
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!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.434 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 17. Apr 2016, 08:54
timestamp ?
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.163 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 17. Apr 2016, 18:46
Ok, und wie hilft es mir weiter? Verstehe nicht ganz, was damit gemeint ist.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 17. Apr 2016, 19:09
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.

Verstehe nicht ganz, was damit gemeint ist.
Damit kann ich auch nichts anfangen
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.434 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 17. Apr 2016, 20:54
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
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 17. Apr 2016, 22:04
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
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: IdUDPServer: Daten von vielen verschiedenen Clients empangen?

  Alt 18. Apr 2016, 12:09
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" )
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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