2

n バイトの読み取りを待機している読み取り呼び出しでクライアントがブロックします。

サーバーは n バイトを書き込み、すぐに接続を閉じます。

この場合、読み取りが終了する前にソケットが閉じられた場合、または他の問題が原因で、読み取り呼び出しが負またはゼロを返すことはありますか? (この場合、同じ Linux ボックスで実行されているクライアント/サーバー)

私はそのようなシナリオに直面していますが、これが TCP/IP サブシステムでどのように機能し、どのように解決するのかわかりません。

Sever:
write
close

Client:
read
close
4

2 に答える 2

4

TCP は接続をシリアルに処理し、リーダーは送信者が送信した順序ですべてを処理します。送信者が接続を閉じると、リーダーは、送信されたすべてのデータを読み取る前ではなく、読み取った後に EOF を取得します。

于 2013-07-16T04:18:13.353 に答える