2010-12-05 10 views

答えて

3

はい。ゼロとは、一般的に、ファイルの終わりを意味します。 「ファイルの終わり」とは、使用しているファイル記述子の種類によって異なります。

TCPソケットの文脈では、私があなたがゼロを読むことができることを知っている唯一の方法は、FINが受信されたかどうかです。対照的に、RSTが受信された場合、read()-1errno == ECONNRESETと返します。

+1

ええ、ノンブロッキングモードを忘れました...特別なケース:-) – Archie

+1

ノンブロッキングモードは、 'EAGAIN'で-1を返します。 –

+1

またはむしろ 'EWOULDBLOCK'。 –

1

私はあなたがFINパケットを得ている必要がありますが、あなたが正しい秒カウントにしているかどうか(私の頭の上から)知りません。

リターンコードが0の場合は、ソケットのコンテキストではそれ以上データが存在しないことを意味するファイルの終わりを意味します。

1

ソケットがまだ接続されていて、リモート側が閉じていない場合でも、読み取りから0を得ることができます。これは、カウントとして0を渡す場合に発生します。

関連する問題