Senden und Empfangen von Daten per TCP

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
stickybit
Beiträge: 9
Registriert: Mi Apr 08, 2015 9:42 am

Senden und Empfangen von Daten per TCP

Beitrag von stickybit » So Okt 18, 2015 12:35 pm

Senden und Empfangen von Daten per TCP

Hallo,

Code: Alles auswählen

ssize_t read( int socketfd, void *data, size_t data_len );
Die Funktion gibt Anzahl von gelesenen Bytes zurück. Logischerweise muss sie dann 0 zurückgeben, wenn keine Daten mehr vorhanden sind.
Lt. Beschreibung wird 0 zurückgegeben wenn die Verbindung geschlossen wurde.

Wenn read in beiden Fällen 0 zurückgibt, wie kann ich dann zwischen beiden Fällen unterscheiden?

LG
Andre

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Senden und Empfangen von Daten per TCP

Beitrag von nufan » So Okt 18, 2015 1:46 pm

Ich würde dir raten ein Protokoll um deine Daten zu bauen. Also zuerst sagst du wie viele Daten du insgesamt schickst, danach erst deine Daten selbst. Dann weißt du genau wann die Gegenseite fertig ist mit schicken und du aufhören kannst auf Daten zu warten. Fehlerbehandlung ist ja sowieso über einen negativen Rückgabewert möglich.
Es gibt noch ein paar andere Möglichkeiten einen geschlossenen Socket festzustellen, z.B. indem du einfach versuchst Daten über ihn zu verschicken und dann den Fehlercode interpretierst. Das empfinde ich persönlich aber eher als unzuverlässig und unschön.

Noch als Randnotiz:
read() ist blockierend. Das heißt wenn du versuchst Daten zu lesen, die Gegenseite dir jedoch nicht antwortet - den Socket aber auch nicht geschlossen hat - blockiert das dein Programm.

Antworten