1

読み取りコマンドは、バッファにデータを書き込むときにバッファのサイズをチェックしますか?それとも、バッファが十分に大きくないためにデータが失われる可能性はありますか? つまり、読み取り可能なデータが 10 バイトある場合、サーバーは次の読み取りまで残りの 2 バイトのデータを保存し続けます。

ここでは、状況を過度に脚色するために、例として 8 を使用しています。

InputStream stdout;
...
while(condition)
{
    ...
    byte[] buffer = new byte[8];
    int len = stdout.read(buffer);
}
4

1 に答える 1

3

いいえ、read()利用可能なすべてのバイトに十分なスペースを与えていないという理由だけで、データが失われることはありません。

ここで「サーバー」が何を意味するのかは明確ではありませんが、10 バイトのメッセージの最後の 2 バイトは、最初の読み取り後に利用可能になります。(またはread()、最初の 6 バイトだけを読み取って、たとえば 4 バイトをまだ読み取れないようにすることもできます。)

于 2012-12-03T15:09:21.507 に答える