Pufferüberlauf bei UDP-Empfang

Gast #2069949
Lesenswert?
• ▲
▼
Hallo zusammen

ich habe folgendes Problem mit dem Empfang von Broadcast-Paketen auf 
einem Beck IPC (SC11). Hierbei handelt es sich im Wesentlichen um einen 
80186 @40MHz, auf dem ein proprietäres RTOS läuft. Ich vermute aber, 
dass das Problem eher an meinem Verständnis von UDP liegt:

Mehrere IPC hängen über WLAN in einem Netzwerk und broadcasten je mit 
20Hz kurze UDP-Pakete mit Statusinformationen.
Jeder IPC empfängt alle Pakete und verarbeitet sie.
Alle Statuspakete werden von einem PC problemlos empfangen.
Vom PC generierte Statuspakete werden von einem IPC problemlos 
empfangen.
Ein Statuspaket von einem IPC bringt den anderen zum Absturz:

Der Rx-Buffer des Sockets umfasst 1048 Bytes (128 Statuspakete). Mit 
'GetWaitingBytes' prüfe ich, ob ein vollständiges Paket im Puffer 
vorliegt und lese es dann in meine Datenstruktur ein. Dies wiederhole 
ich, bis alle vollständigen Pakete im Puffer verarbeitet sind.
In jedem Zyklus liegen (abhängig von der Anzahl IPC im LAN) 4..10 Pakete 
im Puffer.

Bei dem Einlesen von IPC-Statuspaketen bekomme ich nun den Fehler 240 
(Datagramm im Puffer ist größer als das Zielarray) und es wird NICHTS 
eingelesen. Dadurch läuft der Puffer voll und die 
'GetWaitingBytes'-Abfrage führt zu einer Endlosschleife.

Wie würdet Ihr die Pakete einlesen, oder woran könnte überhaupt diese 
Unverträglichkeit der IPC untereinander verursacht werden?

sorry für dan langen Post - und vielen Dank für jegliche Hinweise!
Hendrik

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.