ソケットからデータを読み取る次のコードがあります。
byte[] data = new byte[dataLength];
if(dataLength > 2000000)FileManager.writeToLogFile(this.getClass(), "GetIncomingMessages", LogMessageType.DEBUG, "XXXXYYYY => 2 length: " + dataLength);
for(int i = 0 ; i < dataLength ; i++){
byte[] temp = new byte[1];
in.read(temp);
data[i] = temp[0];
}
if(dataLength > 2000000)FileManager.writeToLogFile(this.getClass(), "GetIncomingMessages", LogMessageType.DEBUG, "XXXXYYYY => 3 length: " + dataLength);
このコードは、約 3MB (正確には 3227056 バイト) のサイズのパックを取得するまでは正常に機能します。このパケットを受信すると、例外は発生せず、プログラムがクラッシュすることもありませんが、コードがその時点を超えて進行することはありません。基本的に、上記の最後のログ エントリは作成されません。
この理由は何ですか?少なくともエラーが何であるかを理解するにはどうすればよいですか? (エラーはどの try-catch ブロックでもキャッチされません)。ただし、この時点を超えて発生する受信は他にもあります。