Hans Wurst schrieb:
> Heisst das jetzt, dass dass die
> Funktionen aus dieser Bibliothek alles "automatisch" erledigen, also
> dass ich - je nach Größe des Ringbuffers - einfach X-Zeichen in den
> Buffer schreibe und die Zeichen "automatisch" nach und nach übertragen
> werden, ohne dass ich mich jetzt um den Kram kümmern brauch bzw. beim
> Lesen ähnlich? Diese Bibliothek automatisiert mir ggf. also alles?
Um's genau zu wissen, brauchen wir entweder den Quelltext oder die
Dokumentation...
Ein Ringpuffer ist halt ein einfacher Puffer, der "überlaufen" kann.
Also z.B. wenn der Empfangspuffer 16 Byte groß ist und Du nicht schnell
genug die Daten "abholst" könnte, dann würde der Ringpuffer überlaufen.
Was dann genau passiert steht (hoffentlich) in der Dokumentation. Es
kann z.B. sein, dass dieser Zustand "ignoriert" wird. Dann bekommst Du
Datensalat beim Lesen... oder es wird festgestellt und Du bekommst eine
Meldung für den Pufferüberlauf und musst evtl. den Puffer
"zurücksetzen". Weitere Varianten sind denkbar...
Der Puffer kann beim Lesen auch "unterlaufen", d.h. Du versuchst Daten
zu lesen, aber es sind noch keine empfangen worden. Auch hier kann der
Aufruf blockieren (Anwendung hängt, bis Daten empfangen worden sind -
mit etwas Pech, wenn die Verbindung gestört ist bis in alle Ewigkeit).
Oder die Funktion liefert einfach unsinnige Daten oder "-1" oder "0"
zurück. Meist kann man abfragen, ob schon Daten im Puffer sind. Und das
Problem so umgehen.
Auch beim Versand gibt es verschiedene Möglichkeiten: Wenn noch 16
unversendete Bytes im Puffer wären und Du weiter hinein schreibst,
könnte entweder das Problem ignoriert werden (dann überschreibst Du die
noch ungesendeten Daten)... oder es wird ein Pufferüberlauf gemeldet und
du darfst wieder die Verbindung "zurücksetzen"... oder aber der
Schreibaufruf "blockiert".
Wenn der Aufruf blockiert (wartet bis Daten da sind oder in den Puffer
geschrieben werden können), nennt man die Art der Verarbeitung
"synchron" oder "blocking".
Wenn der Aufruf nicht blockiert ist die Verarbeitung "asynchron" oder
"non blocking".
ALSO: Es gibt also verschiedene Varianten. Und wie die Bibliothek zu
benutzen ist, sollte in der Doku stehen. Vielleicht gibt es auch
Beipielprogramme... an denen sieht man am schnellsten, wie mit den
obigen Problemen umzugehen ist.
Soo... Ich denke das sollte für's erste reichen. Damit solltest Du genug
Wissen haben, um heraus zu finden, was die Bibliothek tut.
Grüße,
Stefan