PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Serialisierung in Java


TheFallenAngel
2003-10-17, 15:55:18
hi!

mein problem ist das nichts geschieht wenn ich erst server dann client starte, der Client sollte aber einen int-wert ausgeben......

ich poste infach mal den code, vielleicht kann mir ja jemand helfen

Server:


import java.net.*;
import java.io.*;

public class Server{

public static void main(String[] args){

try{
ServerSocket ss=new ServerSocket(88);
Socket client=ss.accept();

ObjectInputStream fromClient=new ObjectInputStream(client.getInputStream());
ObjectOutputStream toClient=new ObjectOutputStream(client.getOutputStream());

toClient.writeObject(new ComInfo());

} catch(Exception e){System.out.println(e.toString());}
}
}



Client:


import java.net.*;
import java.io.*;

public class Client{

public static void main(String[] args){

try{

Socket server= new Socket("localhost", 88);

ObjectInputStream fromServer=new ObjectInputStream(server.getInputStream());
ObjectOutputStream toServer=new ObjectOutputStream(server.getOutputStream());

ComInfo ci=(ComInfo) fromServer.readObject();

System.out.println(ci.i);

} catch (Exception e){System.out.println(e.toString());}



}
}


das Object:


import java.io.*;

public class ComInfo implements Serializable{

int i=123;

}


thx....

cya

El Fantastico
2003-10-18, 21:39:58
Das war wirklich knifflig...

Das Problem ist, soweit ich das im Quelltext von ObjectInputStream erkennen konnte, das im Konstruktur von ObjectInputStream versucht wird einen Stream Header zu lesen. Daher blockieren Deine Programme beim ObjectInputStream Konstruktor, weil der Stream leer ist :idea:

Du kannst die Aufrufe kreuzen (im Server in vor out, im Client out vor in) oder in beiden Klassen erst out erstellen.

Ein weiteres Beispiel für die exzellente Dokumentation des JDK :D

Falls Du Dich mit JPopups auskennst kannst Du mir vielleicht auch helfen ;)

TheFallenAngel
2003-10-19, 18:28:32
Original geschrieben von El Fantastico
Das war wirklich knifflig...

Das Problem ist, soweit ich das im Quelltext von ObjectInputStream erkennen konnte, das im Konstruktur von ObjectInputStream versucht wird einen Stream Header zu lesen. Daher blockieren Deine Programme beim ObjectInputStream Konstruktor, weil der Stream leer ist :idea:

Du kannst die Aufrufe kreuzen (im Server in vor out, im Client out vor in) oder in beiden Klassen erst out erstellen.

Ein weiteres Beispiel für die exzellente Dokumentation des JDK :D

Falls Du Dich mit JPopups auskennst kannst Du mir vielleicht auch helfen ;)

hi!

danke für deine hilfe - war schon am rande der verzweiflung, aber jetzt funktioniert alles :).....

sorry, von JPopups hab ich leider keine ahnung....

thx
cya

El Fantastico
2003-10-19, 18:32:22
Original geschrieben von TheFallenAngel
sorry, von JPopups hab ich leider keine ahnung....

Ok, trotzdem danke! Hab`s inzwischen auch gelöst - ist (war) ein Bug im JDK!

fomat C
2003-10-28, 13:09:47
Also, du kannst dein Problem folgt lösen:
1) delete java
2) get dev-cpp
3) install dev-cpp
4) use dev-cpp instead of f***ing java!

El Fantastico
2003-10-28, 14:28:43
Original geschrieben von fomat C
Also, du kannst dein Problem folgt lösen:
1) delete java
2) get dev-cpp
3) install dev-cpp
4) use dev-cpp instead of f***ing java!
Und wenn Du Schlaumeier dann noch ein funktionierendes Serialisierungsframework in CPP schreibst kann ich Dein Posting eventuell ein bisschen ernst nehmen.