私の質問は、私はそれに別のオブジェクト(msg)を含むオブジェクトクラス(パケット)を持っているということです。私は両方のクラスがSerializableを実装するようにします。私のコードの一部私は私のプログラムを実行するときしかし、私はこのエラー「:無効な型コード00 java.io.StreamCorruptedException」:参照オブジェクトの書き込み/読み込み
outStrm=new ObjectOutputStream(mySocket.getOutputStream());
inStrm=new ObjectInputStream(mySocket.getInputStream());
outStrm.writeObject(new packet());
outStrm.flush();
を、サーバー側で私はこの
Socket client = listen_socket.accept();
in=new ObjectInputStream(client.getInputStream());
out=new ObjectOutputStream(client.getOutputStream());
p=(packet) in.readObject();
ように読めます
私は多くのパケットを送信し、奇妙な部分は、私はそれを(ステップバイステップで)私はエラーが表示されませんが、私はこのエラーが発生した実行時にデバッグすることです!私を助けてください。
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
class ServerThre
extends Thread
{
Socket client;
ObjectInputStream in;
ObjectOutputStream out;
public ServerThre(Socket client_socket)
{
client = client_socket;
try
{
in = new ObjectInputStream(client.getInputStream());
out = new ObjectOutputStream(client.getOutputStream());
}
catch (IOException e)
{
try
{
client.close();
}
catch (IOException e2)
{
}
System.err.println("Exception while getting input streams: " + e);
return;
}
this.start();
}
private packet getPacket() throws IOException
{
packet p;
try
{
p = (packet)in.readObject();
if (p != null)
{
return p;
}
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
return null;
}
@Override
public void run()
{
while (!client.isClosed())
{
packet p = null;
try
{
p = getPacket();
}
catch (IOException e1)
{
e1.printStackTrace();
}
if (p == null)
{
System.out.print("Connection closed by server, exiting");
return;
}
}// end of while
}
}
コードとスタックトレースを送信する必要があります。問題はあなたが投稿した8行ではなく*表示されているコードである。 –
クラスの両方をシリアライズ可能にすることは本当ですか?私の総コードはたくさんあります。 – Sara
これを試してみましょう - これを読んでください:[SSCCE](http://sscce.org/)。問題があることを示すものを作成します。戻ってきて、投稿してください。誰もあなたを助けることはできません。あなたが投稿したスニペットには何も問題はありません。 –