java.io.StreamCorruptedException: invalid stream header: 7371007E

Posted by Alex on Stack Overflow See other posts from Stack Overflow or by Alex
Published on 2010-05-30T14:45:14Z Indexed on 2010/05/30 14:52 UTC
Read the original article Hit count: 295

Filed under:
|
|

Hello, this is pprobably a simple question .
I got a client Server application which communicate using objects.
when I send only one object from the client to server all works well.
when I attempt to send several objects one after another on the same stream I get

StreamCorruptedException.  

can some one direct me to the cause of this error .
Thanks client write method

private SecMessage[] send(SecMessage[] msgs) 
    {
        SecMessage result[]=new SecMessage[msgs.length];
        Socket s=null;
        ObjectOutputStream objOut =null;
        ObjectInputStream objIn=null;
        try
        {
            s=new Socket("localhost",12345);
            objOut=new ObjectOutputStream( s.getOutputStream());
            for (SecMessage msg : msgs) 
            {
                objOut.writeObject(msg);
            }
            objOut.flush();
            objIn=new ObjectInputStream(s.getInputStream());
            for (int i=0;i<result.length;i++)
                result[i]=(SecMessage)objIn.readObject();
        }
        catch(java.io.IOException e)
        {
            alert(IO_ERROR_MSG+"\n"+e.getMessage());
        } 
        catch (ClassNotFoundException e) 
        {
            alert(INTERNAL_ERROR+"\n"+e.getMessage());
        }
        finally
        {
            try {objIn.close();} catch (IOException e) {}
            try {objOut.close();} catch (IOException e) {}
        }
        return result;
    }

server read method

            //in is an inputStream Defined in the server
            SecMessage rcvdMsgObj;
    rcvdMsgObj=(SecMessage)new ObjectInputStream(in).readObject();
    return rcvdMsgObj;

and the SecMessage Class is

public class SecMessage implements java.io.Serializable
{
    private static final long serialVersionUID = 3940341617988134707L;
    private String cmd;
        //... nothing interesting here , just a bunch of fields , getter and setters
}

© Stack Overflow or respective owner

Related posts about java

Related posts about serialization