返信

匿名希望さん、
弊著お読みいただきありがとうございます。

さて、FINの動作ですが、
その前に、129〜131ページにある
「2.3.7 HTTPレスポンスメッセージを受信」
という箇所をもう一度読んでみてください。

何かデータを送信したアプリケーションは
送信後、readを実行して
相手からの届いたデータを渡すよう、OSに依頼するはずです。
そして、OSは届いたデータをアプリケーションに渡します。
もし、データが届いていなければ、
データが届くのを待って、届いた時にアプリケーションに渡します。

つまり、アプリケーションはreadを実行することで、
届いたデータを受け取れる、ということです。
FINを待つ必要はありません。

少し補足します。
データを受信した後の動きはどうなるか、という点です。

普通、データを受信したクライアントは
次のデータを受け取るために、再度readを実行します。
そして、データを受け取ったら、再度readする、また受け取る、readする
という具合に、データが終わるまで、この動作を継続します。

133ページは、
このようなデータ受信動作が続いた後に
FINが来ることを想定しています。
つまり、アプリケーションがデータを受け取りに来たところに
FINが届く、ということです。

なお、133ページには、
FINが届いた後でreadが実行されるように書いてありますが、
クライアントの動作速度が速い場合は、
FINが届く前にreadが実行されるかもしれません。
その場合は、OSはデータの到着を待ち、
届いたのがFINであれば、データ終了をアプリケーションに通知します。

<code>Only

  • 使用できるHTMLタグ: <code>
  • 文字で図を描く場合に<code>と</code>で囲んでください
画像認証
機械的なスパムメッセージ送信を防止するために画像認証を設けています。ご協力ください。
Image CAPTCHA
Enter the characters shown in the image.