Datenpakete variabler Länger über UDP verschicken
-
Hallo,
ich verschicke derzeit mit den üblichen socket-Funktionen Datenpakete über UDP. Konkret gibt es ein struct, dass die Daten aufnimmt, das etwa so aussieht:
typedef struct daten_t { uint32_t id; uint32_t message; } daten_t;
Zum versenden verwende ich sendto, caste den pointer auf daten_t auf einen void* und verschicke sizeof(daten_t) Daten.
Das gleiche mache ich auf Empfängerseite mit receive_from.
Jetzt würde ich gerne mehrere Datenpakete in ein UDP-Paket zusammenfassen, aber immer unterschiedlich viele. Meine Idee ist eine Datenstruktur wie folgt:
uint8_t anzahl_der_folgenden_pakete; daten_t pakete[anzahl_der_folgenden_pakete]; uint8_t stop_byte;
Ich würde dann anzahl*sizeof(daten_t) auszulesen versuchen.
Wie kann ich das implementieren? Mit einer union? Wie geht das, wenn anzahl zur Laufzeit immer verschieden ist?
Danke für guten Input!
-
^^mach einfach ein festes array aus daten_t-structs, z.b. 180 (1440 bytes gehen noch durch UDP über ethernet, ohne dass ip-fragmentierung zuschlägt). dann füllste das array und verschickst soviel, wie drin ist. eine längenangabe brauchste nicht, weil man auf empfängerseite einfach paketlänge/sizeof(daten_t) rechnen kann, um an die anzahl der elemente zu kommen.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.