DataInputStreamを使用して、ソケットからいくつかのバイトを読み取ります。ストリームから読み取るバイト数が予想されます(ヘッダーをデコードした後、メッセージに含まれるバイト数がわかります)99%の時間は機能しますが、読み取られるバイト数がlen未満になる場合があります。
int numRead = dis.read(buffer, 0, len);
numReadがlen未満になる原因は何ですか?-1ではありません。ストリームが閉じられるかEOFに達するまで、読み取りの動作がブロックされると予想しますが、ストリームの基盤となるソケットの場合、ソケットが閉じない限り、これは発生しないはずです。
常にlenバイトを読み取ることを保証するソケットからバイトを読み取る方法はありますか?
ありがとう