T
Tausendacht
Neues Mitglied
- 0
Hallo,
ich möchte innerhalb einer TCP-Verbindung ein einfaches serialisiertes Objekt senden. Dabei erhalte ich jedoch immer folgende Exception:
Gesendet wird ein Objekt folgender Klasse:
Gesendet wird es von der Server-Seite:
Empfangen wird es von der Client-Seite:
Noch ein paar Anmerkungen:
1. Die Exception tritt beim Lesen des eingegangenen Objektes auf (Client, Zeile 17, orange makiert).
2. Ich programmiere mit Eclipse (alle Dateien befinden sich im selben Projekt) und teste es dann auf 2 Samsung Galaxy Note 10.1 (Android 4.1.2). Beide greifen also auf die gleiche Quelldatei zu.
3. Früher im Programm wird bereits vom Client zum Server (also in die entgegengesetzte Richtung) ein Objekt der gleichen Klasse gesendet, was problemlos funktioniert.
4. Ich habe diese Frage bereits in einem Java-Forum gestellt, wo mir nahe gelegt wurde, dass es sich wohl um ein Android-spezifisches Problem handelt.
Ich hoffe, Ihr könnt mir weiterhelfen, was diesen Fehler auslöst und wie ich ihn beheben kann.
Danke!
ich möchte innerhalb einer TCP-Verbindung ein einfaches serialisiertes Objekt senden. Dabei erhalte ich jedoch immer folgende Exception:
Code:
java.io.InvalidClassException: Read null attempting to read class descriptor for object
Gesendet wird ein Objekt folgender Klasse:
Code:
public class CodeMessage implements Serializable
{
private static final long serialVersionUID = 3850374419322130176L;
private int code;
public CodeMessage(){}
public CodeMessage(int code){this.code = code; }
public int getCode(){return code;}
}
Gesendet wird es von der Server-Seite:
Code:
public class TCPServer extends Thread
{
private ObjectOutputStream out;
[ . . . ]
public boolean sendMessage(Object object)
{
boolean success;
if(out == null)
{
success = false;
}
else
{
try {
out.writeObject(object);
} catch (IOException e) {Log.e("TCPServer sendMessage()", e.getMessage());
return false; }
success = true;
}
return success;
}
}
Empfangen wird es von der Client-Seite:
Code:
public class TCPClient extends Thread
{
private ObjectInputStream in;
[ . . . ]
@Override
public void run()
{
super.run();
try {
// messages-recieving-loop
while (!isInterrupted())
{
// Try to read sent object
[COLOR="DarkOrange"]Object message = in.readObject();[/COLOR]
// pass it to the listener
if ((message != null) && (messageListener != null))
{
messageListener.messageReceived(message);
}
}
} catch (InvalidClassException e){
Log.e("TCPClient.run() InvalidClassException", e.getMessage());
} catch (Exception e){ Log.e("TCPClient.run()", e.getMessage()); }
}
}
Noch ein paar Anmerkungen:
1. Die Exception tritt beim Lesen des eingegangenen Objektes auf (Client, Zeile 17, orange makiert).
2. Ich programmiere mit Eclipse (alle Dateien befinden sich im selben Projekt) und teste es dann auf 2 Samsung Galaxy Note 10.1 (Android 4.1.2). Beide greifen also auf die gleiche Quelldatei zu.
3. Früher im Programm wird bereits vom Client zum Server (also in die entgegengesetzte Richtung) ein Objekt der gleichen Klasse gesendet, was problemlos funktioniert.
4. Ich habe diese Frage bereits in einem Java-Forum gestellt, wo mir nahe gelegt wurde, dass es sich wohl um ein Android-spezifisches Problem handelt.
Ich hoffe, Ihr könnt mir weiterhelfen, was diesen Fehler auslöst und wie ich ihn beheben kann.
Danke!