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...