私はServerSocketを作成し、異なるクライアントからメッセージを読みました。クライアントの1人は、メッセージを送信した後にアプリケーションが正しく動作しないと主張していました。 TCPトレースを取得してメッセージを実際に送信したのを確認しましたが、サーバーアプリケーションはソケットからデータを読み取れませんでした。スレッドダンプが発生し、すべてが正常に処理されているようです。java - ソケットから読み取ることができない
"Reader Thread" daemon prio=3 tid=0x0ae8a000 nid=0x999 runnable [0x14525000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
ストリームからメッセージを読み取れなかった原因は何でしょうか?他のクライアントは、この種の問題に苦しんでいません。
private byte[] readByte(int readCount) throws Exception {
int b;
int readedCount = readCount;
byte[] receiveBuffer = new byte[readCount];
while(true) {
if(readCount > 0) {
b = inputStream.read(receiveBuffer, readCount - readedCount, readedCount);
} else {
b = 0;
}
if(b < 0) {
throw new UnrecoverableSocketException("Connection is Broken");
} else {
readedCount = readedCount - b;
}
if(readedCount == 0) {
return receiveBuffer;
}
}
}
ところで、私はTCPダンプでTCP ACKメッセージを見ることができます –