Frage mit sendende Objekt über java-sockets

Also ich habe auf einer 2-Spieler-Tic-Tac-Toe-Spiel in java mit sockets. Alle socket-Zeug funktioniert, und ich bin das senden von Daten hin und her erfolgreich zwischen 2 clients und einem server.

Habe ich die folgenden Klassen: - Requester -, Provider -, und TBoard (das reicht Serializable).

In der Requester (client) Klasse instanziiere ich ein Objekt von TBoard (TBoard board = new TBoard()).

Ich senden Sie dieses Objekt über den socket an meine zwei Kunden, die über einen output-stream.

Den Fehler bin ich immer auf der client-Seite, und es ist: Exception in thread "main" java.lang.ClassCastException: java.lang.String

Geschieht mit:

 board = (TBoard) in.readObject(); in:

 do {
    try {
       board = (TBoard) in.readObject();
       System.out.println(board.print_board());
    } catch (ClassNotFoundException classNot) {
       System.err.println("data received in unknown format");
    }

Meine print_board () - Methode in der TBoard-Klasse gemeint ist, die Rückkehr ein 2d-array, aber für jetzt (Vereinfachung Zwecke), habe ich die Methode der Rückgabe der string "Hallo"...

Weiß jemand, warum dies passiert? Ich wollte nicht bombardieren Sie alle mit code, aber bitte lassen Sie mich wissen, wenn die Buchung mehr hilfreich sein können...

Dank!


UPDATE:

Hier ist, was ich habe, geht auf (im detail) mit meinem Provider (server) Klasse:

 //1. creating a server socket
 providerSocket = new ServerSocket(20092);

 //2. Wait for connection
 System.out.println("Waiting for connection...");

 connection1 = providerSocket.accept();
 System.out.println("Connection received from Player 1 "    + 

 connection1.getInetAddress().getHostName());
 connection2 = providerSocket.accept();
 System.out.println("Connection received from Player 2 " + connection2.getInetAddress().getHostName());

 //3. get Input and Output streams
 out = new ObjectOutputStream(connection1.getOutputStream());

 out2 = new ObjectOutputStream(connection2.getOutputStream());

 in = new ObjectInputStream(connection1.getInputStream());
 out.writeObject("Player 1 has been connected successfully.");
 in2 = new ObjectInputStream(connection2.getInputStream());
 out2.writeObject("Player 2 has been connected successfully.");

 out.flush();
 out2.flush();

 out.writeObject(board);
 out2.writeObject(board);

So, ich bin ja senden einer Zeichenfolge in den Bächen vor dem senden das Letzte Objekt (board). Aber ich bin ausspülen die streams vorher. Ich habe auch versucht, reset()'s nach den flushes, und es gab mir noch die IllegalCastException...

  • fügen Sie eine weitere zu fangen classcastexception-Fehler. Wie catch(classcastexception-Fehler CCE) { CCE.printStackTrace(); } und zeigen Sie uns die ersten paar Zeile des Ergebnisses. Ich möchte wissen, für sicher, was der Linie zu Problemen führen
  • Er sagt, so in der Frage - habe ich übersehen, dass auf den ersten als auch
InformationsquelleAutor littleK | 2009-09-23
Schreibe einen Kommentar