匿名希望さん,こんばんわ。 拙書お読みいただき,ありがとうございます。
> ウェブのファイルを受信し終えた後、ブラウザは、何故更にreadを...
readとかwriteという動作は通信だけでなく, ファイルを読み書きする際にも使う一般的な動作です。 それなのに,readやwriteを実行するプログラムの基本的な考え方が あの本には書いてないですね。(^^; プログラミングの解説本じゃないので,その辺はお許しください。
なので,read動作を実行するプログラムの基本から書きますね。
まず,基本的な前提ですけど, 1回のreadでデータを全部読み込むことは,ほとんどありません。 そして,データがどのくらいの長さなのか,事前にはわからない, と仮定することが多いです。 大きなデータを一度に読み込もうとすると, メモリが大量に必要になるっていう事情が背景にあるからなのですが。
そこで,1回に1バイト分ずつ,あるいは1行分ずつという感じで, 細切れにしてデータをreadします。 そして,read動作を繰り返すと,そのうちにデータの最後尾に達し, そこで実行したreadの結果として, OSから「データは終わったよ」という意味の情報が返ってきます。 これでデータの終わりを知るわけです。
データの末尾に「これで終わり」っていう意味の情報入れておいて, それで終わりを知るっていう方法もありますけど, 画像データなどのバイナリデータを扱うときは, データの中に「これで終わり」と同じものが入っていたりすると, 面倒なことになりますから, その方法は今は一般的ではありません。
そうなると,データが終わったよという情報, (通信の場合は,送信動作が終わって切断したよ,という情報) が返ってくるまではデータが終わったどうかわからない っていうことになります。
データの受信が終わったことが分かれば, もうreadを実行する必要はありませんが, 終わったかどうかが分からないので, 終わりに達するまでreadを繰り返し実行する, っていうことですね。
こんな説明でわかります?
More information about text formats
「終わり」の知らせが来るまではデータが終わったことがわからない
匿名希望さん,こんばんわ。
拙書お読みいただき,ありがとうございます。
> ウェブのファイルを受信し終えた後、ブラウザは、何故更にreadを...
readとかwriteという動作は通信だけでなく,
ファイルを読み書きする際にも使う一般的な動作です。
それなのに,readやwriteを実行するプログラムの基本的な考え方が
あの本には書いてないですね。(^^;
プログラミングの解説本じゃないので,その辺はお許しください。
なので,read動作を実行するプログラムの基本から書きますね。
まず,基本的な前提ですけど,
1回のreadでデータを全部読み込むことは,ほとんどありません。
そして,データがどのくらいの長さなのか,事前にはわからない,
と仮定することが多いです。
大きなデータを一度に読み込もうとすると,
メモリが大量に必要になるっていう事情が背景にあるからなのですが。
そこで,1回に1バイト分ずつ,あるいは1行分ずつという感じで,
細切れにしてデータをreadします。
そして,read動作を繰り返すと,そのうちにデータの最後尾に達し,
そこで実行したreadの結果として,
OSから「データは終わったよ」という意味の情報が返ってきます。
これでデータの終わりを知るわけです。
データの末尾に「これで終わり」っていう意味の情報入れておいて,
それで終わりを知るっていう方法もありますけど,
画像データなどのバイナリデータを扱うときは,
データの中に「これで終わり」と同じものが入っていたりすると,
面倒なことになりますから,
その方法は今は一般的ではありません。
そうなると,データが終わったよという情報,
(通信の場合は,送信動作が終わって切断したよ,という情報)
が返ってくるまではデータが終わったどうかわからない
っていうことになります。
データの受信が終わったことが分かれば,
もうreadを実行する必要はありませんが,
終わったかどうかが分からないので,
終わりに達するまでreadを繰り返し実行する,
っていうことですね。
こんな説明でわかります?