Java NIO を使用してソケット操作を行っています。過去にストリームを操作する場合、read
呼び出し (バイト配列、この場合は a にByteBuffer
読み込む) は、ストリームから読み取ったバイト数を返すか、ストリームが閉じられている場合は -1 を返します。だからあなたは基本的にできる
while(channel.read(buffer) != -1){
//do stuff
}
ただし、サーバーを停止していることに気付きました。read()
いくつかのログ ステートメントを追加したときに、呼び出しがストリームの最後に -2 を返していることに気付きました。ドキュメントによると:
戻り値: 読み取られたバイト数、場合によってはゼロ、またはチャネルがストリームの終わりに達した場合は -1
誰もこれを経験したことがありますか?値 >0 でループするようにコードを変更しましたが、何が起こっているのかを理解したいと思っていました。