Einzelnen Beitrag anzeigen
Alt 24.04.2003, 21:15   #7
blauesau
Hero
 
Registriert seit: 08.04.2003
Beiträge: 821


Standard

Langsam wird mir die Fragerei peinlich...

Erstmal Code (Kot?):

Code:
import java.net.*;
import java.io.*;
import javax.swing.*;

public class MSSClientThread
    extends Thread {
  protected int instance;
  protected Socket socket;

  public MSSClientThread(int inst, Socket sock) {
    instance = inst;
    socket = sock;
  }

  public void run() {
    InputStream input = null;
    ObjectInputStream oinput = null;

    System.out.println("(" + instance + ") Verbindung aufgebaut");

    try {
      input = socket.getInputStream();
      //oinput = new ObjectInputStream(input);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

    while (true) {
      try {
        oinput = new ObjectInputStream(input);
        
        JPanel o = (JPanel) oinput.readObject();

        System.out.println("(" + instance + ") " + o.getLocation().x);

        if (input.read() == -1) {
          System.out.println("(" + instance + ") Verbindung beendet");
          socket.close();
          break;
        }
      }
      catch (Exception ex) {
        ex.printStackTrace();
        break;
      }
    }
  }
}
Was hätte ich gerne? Der Client schickt an diesen Thread ein Objekt (in diesem Fall, beispielsweise vom Typ JPanel, wie auch immer...). Der Server (Thread) liest die x-Koordinate aus und gibt sie aus. Dann soll er auf weitere Incomings warten, bis es zu einer Abbruchbedingung kommt. Funktioniert auch - aber nur einmal! Versuche ich mit dem Client noch einmal zu senden, kommt es beim Server zu dieser Fehlermeldung:

Code:
java.io.StreamCorruptedException: invalid stream header
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
	at sic.MSSClientThread.run(MSSClientThread.java:39)
MSSClientThread.java:39 bezieht sich dabei auf die rot eingefärbte Zeile...
blauesau ist offline   Mit Zitat antworten