mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pufferüberlauf bei UDP-Empfang


Autor: henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.