java.io.StreamCorruptedException: invalid stream en-tête: 7371007E

J'ai un client du Serveur d'applications qui communiquent à l'aide d'objets.

lorsque j'envoie un seul objet de la part du client au serveur tout fonctionne bien.

lorsque je tente d'envoyer plusieurs objets l'un après l'autre sur le même flux-je obtenir

StreamCorruptedException.  

Peut quelqu'un m'orienter vers la cause de cette erreur?

client la méthode d'écriture

   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;
 }

serveur méthode de lecture

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

et la SecMessage Classe est

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
}
  • J'ai formaté un peu pour des raisons de lisibilité - vous pouvez mettre en forme des blocs de code à l'aide de l' (101 010) bouton.
InformationsquelleAutor Alex | 2010-05-30