LwIP remote close erkennen

OP #7496307
Lesenswert?
• ▲
▼

Kennt sich hier jemand mit der RAW Api von LwIP aus? Ich fange an neue Verbindungen vom PC aufzunehmen und starte im accept handler das lesen mit tcp_recv. Soweit funktioniert das auch alles aber wie kann ich einen handler dafür setzen ob der PC die Verbindung getrennt hat?

In der Dokumentation steht, dass der pbuf im receive NULL ist, wenn die Verbindung geschlossen wurde. Heißt das ich muss immer einen Lesevorgang starten um das zu erkennen oder geht das auch ohne Lesevorgang?

#7496316
Lesenswert?
• ▲
▼

Du musst Schreiben um einen Fehler zu bekommen. Lesen hilft nur wenn du weißt das der Gegner zyklisch etwas sendet und dann kann man einen Timeout setzen. Bzw. beim Receive bekommt nur einen 'graceful close' mit, also wenn der Gegner während des receive close aufruft. Auf Ereignisse vom Phy kann man sich nicht verlassen, die Strecke kann ja irgendwo nach dem x-ten Switch unterbrochen sein und das bekommt man nicht mit.

Gast #7496496
Lesenswert?
• ▲
▼

J. S. schrieb:

Auf Ereignisse vom Phy kann man sich nicht verlassen, die Strecke kann ja irgendwo nach dem x-ten Switch unterbrochen sein und das bekommt man nicht mit.

Zudem kurz Kabel ab- und wieder an stecken normalerweise (unabhängig von lwip meine ich) nicht automatisch eine Trennung des IP Sockets zur Folge hat.

#7497233
Lesenswert?
• ▲
▼

Eine einseitig geschlossene TCP Verbindung wird von der Gegenseite erst erkannt, wenn diese versucht Daten zu senden und das Acknowledge aus bleibt. Andernfalls wird sie endlos auf Datenempfang warten.

Um eine geschlossene Verbindung zu erkennen, kann Keepalive verwendet werden, wenn die TCP/IP Implementierung dies unterstützt, oder es muss auf Anwendungsebene regelmäßig Daten gesendet werden.

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.