lwIP STM32f4 kontiuierlich senden

Gast #5492593
Lesenswert?
• ▲
▼
Hallo,

ich versuche mit einem Stm32f4-Board und mit Hilfe des lwIP-Stacks eine 
TCP/Ip-Verbindung aufzubauen und versuche daraufhin ein beliebiges 
Zeichen zu senden. Ich habe mir bereits das Echo-Server Beispielprogramm 
angeschaut und versuche jetzt dieses auf meine Anwendung anzupassen. 
Leider gelingt es mir mit dem Board immer nur dann die Daten raus zu 
senden, sobald das Board vom Rechner ein Zeichen erhält. Ich möchte 
jedoch, dass sobald die Verbindung steht das Board Daten rausschickt.
Ich bitte schonmal vorab um Verzeihung, dass meine Netzwerkkenntnisse 
nicht die besten sind.
Die Source-Dateien befinden sich im Anhang.
Angehängte Dateien:
#5492678
Lesenswert?
• ▲
▼
Ich hab mal kurz über deinen Code geschaut. Du verwendest tcp_write und 
die Doku dazu 
(http://www.nongnu.org/lwip/2_0_x/group__tcp__raw.html#ga6b2aa0efbf10e254930332b7c89cd8c5) 
sagt:
"It waits in the expectation of more data being sent soon (as it can 
send them more efficiently by combining them together)." Man muss dann 
noch tcp_output aufrufen um sofort zu senden.

Gerade weil du sagst, dass deine Netzwerkkenntnisse nicht so gut sind, 
hier ein paar Hinweise, die überraschend sein könnten.

1) Der Stack wartet normalerweise ein Zeit, ob noch weitere Daten 
kommen, damit nicht jedes einzelne Byte ein eigenes Paket mit Header 
bekommen muss.

2) TCP garantiert nur, dass die Daten am anderen Ende wieder in der 
selben Reihenfolge rauskommen, aber nicht, dass sie in den gleichen 
Blöcken rauskommen. Wenn du z.B. auf der einen Seite 4 Strings zu je 20 
Byte verschickst, dann können diese beim Empfänger in beliebiger 
Stückelung ankommen. Es kann sein, dass es beim Test funktioniert, aber 
jeder Router und jedes Betriebssystem kann es wieder anders machen. Wenn 
du also Daten trennen willst, dann brauchst du ein Protokoll mit 
Längeninfo oder Steuerzeichen.

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.