Forum: Mikrocontroller und Digitale Elektronik lwIP http server sendet nicht


von Bernhard _. (Firma: dl1bg) (bernhard_)


Lesenswert?

Hallo zusammen,

mit lwIP 1.4.0 läuft bei mir bereits telnet und ICMP erfolgreich.
Leider funktioniert http nicht, der server scheint keine Daten zu 
senden.

Testaufbau: while(1) mit
- netif->input bei empfangenen Paketen
- tcp_tmr alle 250 ms
- etharp-tmr alle 5 s
- primitiver raw httpd nach dem Beispiel von 
www.sics.se/~adam/lwip/doc/lwip.pdf
- Firefox 10 ohne Firewall

Scheinbar läuft alles gut, bis ich mit tcp_write(pcb, indexdata, 
counter, 0 <oder 1, keine Besserung>) meine Daten gesendet habe.
Die Daten werden wohl nie wirklich versendet.

Hat jemand von euch eine Idee, was ich falsch mache?

Danke
Bernhard


--> log

> gebe die IP-Adresse des Servers in die Adresszeile ein
tcp_input: packed for LISTENing connection.
TCP connection request 50371 -> 80.
tcp_parseopt: MSS
tcp_parseopt: NOP
tcp_parseopt: other
tcp_parseopt: NOP
tcp_parseopt: NOP
tcp_parseopt: other
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags ACK
-+-+-+-+-+-+-+-+-+-+-+-+-+-+
State: SYN_RCVD
> Aufruf http_accept()
tcp_receive: window update 64240
tcp_receive: ACK for 6527, unacked->seqno 6526:6527
tcp_receive: removing 6526:6527 from pcb->unacked
State: ESTABLISHED
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags PSH ACK
-+-+-+-+-+-+-+-+-+-+-+-+-+-+
State: ESTABLISHED
> Aufruf http_recv()
tcp_close: closing in State: ESTABLISHED
CENC28J60::Output
tcp_pcb_purge
tcp_pcb_purge: not all data sent
State: TIME_WAIT
... und ab dann immer nur
tcp_slowtmr: no active pcbs

von Bernhard _. (Firma: dl1bg) (bernhard_)


Lesenswert?

Hallo zusammen,

mittlerweile ist das Problem gelöst.
Lösung: die in den minimalistischen Beispielen verwendeten html-Seiten 
(als char-array im Code selbst sind veraltet.

Viele Grüße
Bernhard

von sandro (Gast)


Lesenswert?

Hallo Bernhard

tcp_write() schreibt normal nur in einen Buffer, der dann mit tcp_tmr 
abgearbeitet wird. Mit tcp_output() kann man das Senden direkt 
erzwingen.

Schöne Grüsse
Sandro

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.