Javaソケットクライアントを実行しています。これは、最初に実行した場合、または最初の数回実行した場合に機能します。ただし、半日のデバッグ後、TCPソケットを読み取るDataInputStreamのreadByte()メソッドはjava.io.EOFExceptionをスローします。 Eclipseを再起動したり、同じJavaコードをスタンドアロンで実行しても問題はありません。私は、Eclipseの実行/ Javaコードのデバッグの仕方と関係があると考えています。どういうわけか、プログラムをデバッグするたびにリソースが使用され、その後にはリリースされません。誰も知っている?私のJavaソケットプログラムは、Eclipseから実行中にjava.io.EOFExceptionを返します
は、ここでは、while(true)
(あるいはそもそもwhile(true)
ループを持っている)のうちbreak
に良い習慣ではありません、コード一般的に
//DataInputStream is set outside of the scope.
DataInputStream dataInputStream;
StringBuffer stringBuffer = new StringBuffer();
while(true)
{
// java.io.EOFException is thrown at the line below.
byte c = dataInputStream.readByte();
if(c == 0) {
break;
}
stringBuffer.append((char)c);
}
単純な推測のコードはありません。答えを受け取るために、コードとスタックトレースを追加することができます。 – SomeJavaGuy
コードスニペットが追加されました。 –
反対側がタイムアウトしてソケットをシャットダウンする可能性があります。 –