LwIP tcp_write() ERR_MEM

OP #7497309
Lesenswert?
• ▲
▼

Ich streame Daten per TCP zu einem PC und benutze dafür im STM32 LwIP. Die Datenrate kann recht hoch sein und ich möchte gerne vor einem Aufruf von tcp_write() wissen, ob noch genügend speicher da ist. Aus der LwIP Dokumentation entnehme ich: "The proper way to use this function is to call the function with at most tcp_sndbuf() bytes of data". Das habe ich gemacht aber es kann immer noch vorkommen, dass ERR_MEM zurückgegeben wird.

Wie kann ich vor Aufruf von tcp_write prüfen, ob noch genug Speicher da ist? Das ist mir wichtig, da ich Daten von einer queue hole und nicht wieder zurückschieben kann aber wenn ich weiß, dass ein senden fehlschlagen würde könnte ich die Datenrate intern drosseln.

Gast #7497320
Lesenswert?
• ▲
▼

Ich weis die Antwort nicht, würde allerdings so vorgehen:

Im Quelltext von tcp_write() nachschauen, was genau den Fehler ERR_MEM auslöst. Vermutlich wird irgendeine Funktion aufgerufen, die den Fehler meldet oder es werden zwei Variablen miteinander verglichen. Den gleichen Check kannst du dann in dein Programm einbauen und benutzen, bevor du tcp_write() aufrufst.

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.