lwip: Unterschied der APIs

OP #6140326
Lesenswert?
• ▲
▼
Hallo Zusammen.

Ich bin dabei einen HTTP Server auf dem ESP aufzusetzen. Nur leider 
verstehe ich die Unterschiede der jeweiligen APIs nicht. Folgende 
Bibliothek verwende ich: lwip

Es gibt dazu mehrere APIs für die Implementierung:

https://www.nongnu.org/lwip/2_1_x/group__api.html

1. raw API
2. Sequential-style API
3. Socket API

Die raw API wird meiner Meinung nach verwendet, wenn kein Betriebssystem 
verwendet werden kann (Aufrufen durch Events).

Wie sieht's mit den anderen beiden aus? Will mir da jemand kurz den 
Unterschied erklären.

Danke ;)
Gast #6140357
Lesenswert?
• ▲
▼
Alexander M. schrieb:

> https://www.nongnu.org/lwip/2_1_x/group__api.html
>
> 1. raw API
> 2. Sequential-style API
> 3. Socket API
>
> Die raw API wird meiner Meinung nach verwendet, wenn kein Betriebssystem
> verwendet werden kann (Aufrufen durch Events).
>
> Wie sieht's mit den anderen beiden aus? Will mir da jemand kurz den
> Unterschied erklären.

Die einzige Aufgabe der von dir selbst verlinkten Doku ist: dir genau 
diese Unterschiede zu erklären.

Lesen und verstehen musst du das selbst. Da kann dir niemand bei helfen. 
Lernen ist immer eigene Anstrengung.
OP #6140413
Lesenswert?
• ▲
▼
Danke, die library habe ich mir schon mal angeschaut.
Ich benötige aber die Sockets so schon, weil ich noch ein paar weitere 
Server implementieren möchte..

Mir ist der grundlegende Gedanke aber zwischen der sequential und der 
socket API aber nicht ganz klar, stimmt das:
Verwendung der Socket API bei Netzwerkprogrammierung in Windows / Unix, 
Verwendung der sequential API bei embedded Devices? Ich kapiere es 
einfach nicht..

Grüße
#6140694
Lesenswert?
• ▲
▼
Alexander M. schrieb:
> 1. raw API
> 2. Sequential-style API
> 3. Socket API

Nummer 3 wird 1:1 genutzt, wie bei klassischen Berkeley-Sockets, wie man 
sie von anderen Systemen her kennt, hat aber einen großen Overhead.
Nummer 2 bietet im Prinzip die gleichen Funktionen, aber mit anderen 
Parametern. Die ist so ausgelegt, dass die Daten nicht alle jedes mal im 
Speicher umher kopiert werden müssen, braucht damit weniger Speicher und 
Laufzeit als Nummmer 3, aber die Benutzung ist immer noch sehr ähnlich.
Beide brauchen Multithreading.
Nummer 1 wird komplett anders verwendet, ist aber bei weitem am 
effizientesten und geht auch ohne Multithreading.

Nummer 3 setzt auf Nummer 2 auf, das wiederum auf Nummer 1 aufsetzt. 
Somit verhält sich dann auch die Codegröße entsprechend, da man nicht 
benötigte Interfaces komplett abschalten kann.
Gast #6140717
Lesenswert?
• ▲
▼
Man kann das "raw" Interface auch mit einem RTOS verwenden. Dann muss 
man sich aber selbst darum kümmern, die Daten zwischen dem Threads hin 
und her zu schicken, weil lwip dann keine Synchronisation mehr bietet. 
Das ist bei den anderen beiden APIs anders.

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.