2012-12-08 3 views
0

Можно создать дубликат:
StreamCorruptedException: invalid type code: ACObjectInputStream исключение

Привет, ребята, я пытаюсь прочитать объект из потока по сети ... Я использую метод ReadInputObject ... и я внедряя его внутри потока, чтобы получить данные ... вот цикл while в резьбе

while((dp = (DataPackage) ois.readObject()) != null) 
     { 

      Ball b = new Ball(); 
      b.setX(dp.x); 
      b.setY(dp.y); 
      jTextField1.setText(b.getX() + " " +b.getY()); 
      b.paint(ob.getGraphics()); 
      b.setVisible(true); 
      ois.reset(); 

     } 
    } catch (IOException ex) { 
     System.out.println("Error 1 is Here"); 
    } catch (ClassNotFoundException ex) { 
     System.out.println("Error 2 is here"); 
    } 

проблема заключается в том, что OIS получает первый объект, а затем .... он идет внутри, за исключением и печатает эту Ошибка 1 здесь

вот код, где я посылаю объект

DataPackage dp = new DataPackage(); 
    dp.x=b1.getX(); 
    dp.y=b1.getY(); 
    dp.t=b1.getT(); 
    dp.dx=(int)b1.getDx(); 
    dp.dy=(int)b1.getDy(); 

    ObjectOutputStream oos = null; 
    try { 
     oos = new ObjectOutputStream(Server_login.client.getOutputStream()); 
    } catch (IOException ex) { 
     Logger.getLogger(Game_Painters_right.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    try { 
     oos.writeObject(dp); 
    } catch (IOException ex) { 
     Logger.getLogger(Game_Painters_right.class.getName()).log(Level.SEVERE, null, ex); 
    } 

что случилось в моем коде ??? спасибо

+1

Распечатайте StackTrace и добавьте его в свой вопрос. Используйте 'ex.printStackTrace()' в ваших 'catch'-блоках. –

+0

java.io.IOException: метка/сброс не поддерживается \t на java.io.InputStream.reset (InputStream.java:347) \t в netbeans_gui_swing.Game_Painters_left $ 5.run (Game_Painters_left.java:221) –

+0

Поместите ** полный ** StackTrace в ваш вопрос ... –

ответ

1

Ну, удалите звонок ois.reset(). Почему это в первую очередь?

+0

Прежде чем я не использовал ois.reset(), но мне захотелось очистить поток и получить новые данные в нем. Вот почему я использовал .reset() ... В любом случае я удалил его для u и вот стек прослеживать java.io.StreamCorruptedException: недействительный код типа: AC \t на java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1374) \t в java.io.ObjectInputStream.readObject (ObjectInputStream.java:369) \t at netbeans_gui_swing.Game_Painters_left $ 5.run (Game_Painters_left.java:212) –

+0

Затем покажите нам код, который отправляет экземпляры DataPackage в ObjectOutputStream с другой стороны. reset() не делает то, что вы думаете. Прочтите javadoc: http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#reset%28%29 –

+0

Я отредактировал код ... проверьте его .. включил часть, где я отправляю объект –

Смежные вопросы