ObjectOutput- / ObjectInputStream Exception?

Status
Nicht offen für weitere Antworten.

raven

Bekanntes Mitglied
Hallo, :wink:

Ich versuche gerade ein Object übers Netzwerk zu verschicken, leider wirft er bei mir eine häßlich Exception.
Weiß einer von euch wie ich sie behandeln kann und wodurch sie ausgelöst wird. Hab schon gegooglet, aber leider nichts brauchbares gefunden.

Hier ein wenig Code:

Das ist mein Object, welches ich verschicken will.
Code:
import java.io.Serializable;

public class PlayerObject implements Serializable {

	public int x;
	public int y;
	public int w;
	public int h;

	public PlayerObject(int x, int y, int w, int h) {
		this.x = x;
		this.y = y;
		this.w = w;
		this.h = h;
	}
}


Die Client Klasse. hier verschicke ich das Object in einem Thread.
Code:
public PlayerObject playerObj;

	public static final int port = 4413;

	public Socket serverSocket;

	public OutputStream out;
	public ObjectOutputStream objectOut;

	public Client(Main main) {
		super();
		this.main = main;
		this.setBackground(Color.white);

		playerObj = new PlayerObject(100, 250, 30, 20);

		try {
			serverSocket = new Socket("localhost", port);
			out = serverSocket.getOutputStream();
			objectOut = new ObjectOutputStream(out);
		} catch (IOException e) {
			System.out.println("Connection to the Server missed: " + e);
			System.exit(1);
		}

		if (thread == null) {
			thread = new Thread(this);
			thread.start();
		}
	}

	public  void run() {
		while (true) {
			try {
				thread.sleep(70);
			}
			catch(InterruptedException e) {
				System.out.println("ERROR: " + e);
			}
			repaint();
			try {
				objectOut.writeObject(playerObj);
				objectOut.flush();
			} catch(IOException e) {
				System.out.println("Transmission missed: " + e);
			}
		}
	}



Meine Server klasse, speichert alle Connections in einem Vector
Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class Server extends Thread {

	public static final int port = 4413;

	private ServerSocket serverSocket;

	private Vector connections;

	public Server() {
		try {
			serverSocket = new ServerSocket(port);
			System.out.println("Server running ...");
		} catch (IOException e) {
			System.err.println("Server could not be started. Server is terminated.");
			System.exit(1);
		}
		connections = new Vector();
	}

	public static void main(String[] args) {
		Server server = new Server();
		server.start();
	}

	public void run() {
		try {
			while(true) {
				Socket clientSocket = serverSocket.accept();
				Connection c = new Connection(this, clientSocket);
				connections.addElement(c);
				broadcast();
			}
		} catch (IOException e) {
			System.out.println("Connection to the Client missed: " + e);
			System.exit(1);
		}
	}

	public void broadcast() {
		Connection you;
		for (int i = 0; i < connections.size(); i++) {
			you = (Connection)connections.get(i);
			try {
				if(you.clientSocket.isClosed() != true) {
					you.objectOut.writeObject(you.object);
				}
			} catch(IOException e) {
				try {
					you.clientSocket.close();
					connections.remove(i);
				} catch (IOException e2) {
					System.out.println("Connection couldn't be closed: " + e2);
				}
				System.out.println("Transmission missed: " + e);
			}
		}
	}
}

Und meine Connection klasse
Code:
import java.net.*;
import java.io.*;

public class Connection extends Thread {

	private Server server;
	public Socket clientSocket;
	
	public OutputStream out;
	public ObjectOutputStream objectOut;
	public InputStream in;
	public ObjectInputStream objectIn;

	public PlayerObject object;

	public Connection(Server server, Socket clientSocket) {
		this.server = server;
		this.clientSocket = clientSocket;
		try {
			out = clientSocket.getOutputStream();
			objectOut = new ObjectOutputStream(out);
			in = clientSocket.getInputStream();
			objectIn = new ObjectInputStream(in);
		} catch (IOException e) {
			try {
				clientSocket.close();
			} catch (IOException e2) {
				System.err.println("Connection couldn't be closed: " + e2);
			}
			System.err.println("Transmission missed: " + e);
			return;
		}
		this.start();
	}

	public void run() {
		while(true) {
			try {
				object = (PlayerObject)objectIn.readObject();
			}
			catch (IOException e) {
				try {
					objectOut.close();
					out.close();
					objectIn.close();
					in.close();
					clientSocket.close();
				} catch (IOException e2) {
					System.err.println("Connection couldn't be closed: " + e2);
				}
				System.err.println(e);
			}
    			catch (ClassNotFoundException e) {
				try {
					objectOut.close();
					out.close();
					objectIn.close();
					in.close();
					clientSocket.close();
				} catch (IOException e2) {
					System.err.println("Connection couldn't be closed: " + e2);
				}
				System.err.println(e);
			}
		}
	}
}

Hoffe einer von euch kann mir einen guten Tipp geben, wie ich die Exception beseitigen kann.

mfg X_Master
 
S

SlaterB

Gast
erzähl doch mal was für eine Exception kommt?!
beim Client oder Server?

ich vermute stark, dass beim Deserialisieren kein Objekt erzeugt werden kann,
weil der Default-Konstruktor
public PlayerObject() {
}

fehlt,
den anderen zu nutzen ist etwas zu hoch für automatisierte Java-Prozesse..

-------

Tipp:
anfangs auch mal mit einfachen vorgegebenen Objekten wie String/ Integer testen,
wenn du das getan hattest es mit diesen geht, dann wäre das eine wichtige Info gewesen..
 

raven

Bekanntes Mitglied
Diese Exception wird geworfen. java.net.SocketException: Connection reset

Ich hab was vergessen zu sagen. Die Exception wird nur geworfen, wenn ich den Clienten schließen. Wie kann ich die aber abfangen.
Ich habe schon versucht, wenn die Ecxeption ausgeworfen wir, die Verbindung zu schließen, hilft aber nicht.

EDIT: wird beim Server geworfen.

mfg X_Master
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D new ObjectInputStream(socket.getInputStream()); Netzwerkprogrammierung 15
G ObjectOutputStream und ObjectInputStream machen Ärger Netzwerkprogrammierung 17
F ObjectInputStream.readObject() mehrfach aufrufen Netzwerkprogrammierung 2
J ObjectInputStream im Netzwerk Netzwerkprogrammierung 8
K ObjectInputStream EOF Netzwerkprogrammierung 6
G ObjectInputStream hängt ganzes Programm auf... Netzwerkprogrammierung 7
X ObjectInputStream StringCorruptedException Netzwerkprogrammierung 3
V StreamCorruptedException bei ObjectInputStream und ObjectOStream Netzwerkprogrammierung 5
S FileInputStream und ObjectInputStream Netzwerkprogrammierung 18
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
M InputStream and ObjectInputStream zur gleichen Zeit Netzwerkprogrammierung 11
J Socket ObjectInputStream prüfen Netzwerkprogrammierung 8
N Socket neue Referenz auf ObjectInputStream Netzwerkprogrammierung 13
E Rausfinden ob noch Objecte in ObjectInputStream Netzwerkprogrammierung 5
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
C komisches Problem / ObjectInputStream erstellt sich nicht Netzwerkprogrammierung 5
K ObjectInputStream mit CypherInputStream hängt Netzwerkprogrammierung 7
G Datei über ObjectInputStream versenden Netzwerkprogrammierung 8
E ObjectInputStream/ObjectOutputStream nicht erzeugbar Netzwerkprogrammierung 2
T Problem mit ObjectInputStream Netzwerkprogrammierung 2
C Kollision von ObjectInputStream und BufferedReader ? Netzwerkprogrammierung 6
G ObjectInputStream gebuffert? Netzwerkprogrammierung 3
T Webserviceaufruf verursacht eine Exception Netzwerkprogrammierung 3
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D Exception Handling bei In/Outputsockets in eigenen Threads Netzwerkprogrammierung 1
A Cast Exception bei einfachem RMI Beispiel Netzwerkprogrammierung 3
M Socket Exception tritt auf - weiß nicht weiter Netzwerkprogrammierung 3
K Socket Exception Connection reset Netzwerkprogrammierung 9
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
M Socket TCP keep alive Exception wird nicht ausgelöst Netzwerkprogrammierung 11
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
A Socket Socket Verbindung unterbrochen --> keine Exception Netzwerkprogrammierung 7
H Socket Closed Exception verhindern Netzwerkprogrammierung 3
M RMI unmarshaling exception ??? Netzwerkprogrammierung 2
D Socket Streams schliessen .. Exception gewollt? Netzwerkprogrammierung 4
K Socket Socket Exception Netzwerkprogrammierung 3
eQuest RMI Unserializable Exception Netzwerkprogrammierung 4
F Bekomme NoSuchElement Exception Netzwerkprogrammierung 5
S RMI Exception Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
G Exception javax.naming.CommunicationException Netzwerkprogrammierung 16
G Nullpointer Exception - Multithreading Netzwerkprogrammierung 25
G XML-RPC -> Exception $Proxy0-Unknown Source-No such handl Netzwerkprogrammierung 8
T Exception serialisieren? Netzwerkprogrammierung 5
K öffnen des socket schlägt fehl -> ABER: keine exception . Netzwerkprogrammierung 2
M ois nicht null, aber ois.getObject liefer exception Netzwerkprogrammierung 3
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
F Java Mail . Exception java.lang.NoClassDefFoundError Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
J JavaMail Exception bei senden an anderen Server. Netzwerkprogrammierung 8
M schreiben auf geschlossenen Socket ohne Exception Netzwerkprogrammierung 6
R LINUX: getHostAddress() und getHostName() werfen Exception Netzwerkprogrammierung 6
8 PrintWriter Exception Netzwerkprogrammierung 3
D socket exception + timing probleme Netzwerkprogrammierung 2
A Exception bei Cookie lesen Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben