2010-12-05 4 views

Antwort

3

Ja. Null bedeutet allgemein das Ende der Datei. Was "Dateiende" bedeutet, hängt davon ab, welche Art von Dateideskriptor Sie verwenden.

Im Zusammenhang mit einem TCP-Socket ist der einzige Weg, von dem ich weiß, dass Sie Null lesen können, wenn ein FIN empfangen wird. Wenn dagegen ein RST empfangen wird, gibt read()-1 mit errno == ECONNRESET zurück.

+1

yeah, ich habe den nicht blockierenden Modus vergessen ... Sonderfall :-) – Archie

+1

Nicht blockierender Modus gibt -1 mit 'EAGAIN' zurück. –

+1

Oder eher 'EWOULDBLOCK'. –

1

Ich weiß nicht (aus der Spitze meines Kopfes) ob Sie müssen haben ein FIN Paket bekommen, aber Sie sind richtig auf die zweite Zählung.

Ein Return-Code von 0 bedeutet Ende der Datei, was im Zusammenhang mit Sockets bedeutet, dass es keine weiteren Daten geben wird.

1

Sie können auch eine 0 lesen, auch wenn der Socket noch angeschlossen ist und die Remote-Seite nicht geschlossen ist. Dies geschieht, wenn Sie 0 als Anzahl übergeben.

Verwandte Themen