StreamCorruptedException: invalid type code: AC

Mein problem ist, wenn er versucht, das Objekt Lesen, das zweite mal wirft er die exception:

java.io.StreamCorruptedException: invalid type code: AC
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
    at Client.run(BaseStaInstance.java:313)

java.io.StreamCorruptedException: invalid type code: AC
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
    at Client.run(BaseStaInstance.java:313)

Als ich das erste mal senden, die genau die gleiche Objekt, Nachricht; allerdings, wenn ich versuche, das gleiche zu tun, das zweite mal wirft er die oben genannten Fehler. Muss ich re-intialize die readObject () - Methode? Ich selbst gedruckt aus dem message-Objekt, das empfangen wird durch die Linie unten, und Ihre genaue das gleiche wie das erste Beispiel, wo es funktioniert ok.

Object buf = myInput.readObject();

Ich nehme an, es ist ein problem mit Anhängen, aber ich habe wirklich keine Verwendung für das anfügen. Ich wollt einfach nur eine frische Linie jedes mal.
Ich würde wirklich zu schätzen einige Hilfe bei der Festsetzung dieser Fehler. Danke.

==================================

Vor, dass eine Zeile, ich bin nur die Erstellung der input-und output-Objekte für die Steckdose in der run () - Methode. Die object-Deklaration ist außerhalb der run () - Methode in der Klasse:-

@Override
public void run() {
    try {
        sleep((int) 1 * 8000);
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        //Creating input and output streams to transfer messages to the server
        myOutput = new ObjectOutputStream(skt.getOutputStream());
        myInput = new ObjectInputStream(skt.getInputStream());
        while (true) {
            buf = myInput.readObject();
        }
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Du hast Recht; ich glaube nicht, schließen Sie das Objekt. Ich bin mir nicht sicher, wie das zu tun.

Ich bin mir nicht sicher, wo Sie das Objekt schließen
NB Sie fangen sollte EOFException und nicht behandeln es als einen Fehler: anmelden nicht oder drucken Sie den stack-trace; lass es einfach beenden, das Lesen-Schleife. Ich weiß nicht, warum Sie fangen UnknownHostException, wo Sie sind: es kann nicht geworfen werden innerhalb der entsprechenden try-block. Sleep() ist nur eine Verschwendung von Zeit. Entfernen Sie es.

InformationsquelleAutor leba-lev | 2010-03-06

Schreibe einen Kommentar