Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2015, 04:04
hextrem
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
recibir objetos por socket

Buenas, despues de volverme loco buscando cual puede ser el problema no doy con el y el caso es que envio un objeto serizable por socket lo recibo pero no se guarda y me tira un error. El caso hecho un clliente el cual suministra el objeto y el server por otro lado.
Código Java:
Ver original
  1. public class enviar {
  2.    
  3.     String host = "localhost";
  4.     int puerto = 3000;
  5.    
  6.  
  7.    public enviar(Object usu){
  8.     try{
  9.     Socket conesion = new Socket(host,puerto);
  10.     out= new ObjectOutputStream(conesion.getOutputStream());
  11.            
  12.     out.writeObject(usu);
  13.     out.flush();
  14.     out.close();
  15.    
  16. }
  17.    catch( UnknownHostException ex){
  18.        System.err.println("no existe el host");
  19.    }    
  20.    
  21.    catch (IOException ex) {
  22.             System.err.println("error de datos");
  23.         }
  24. }
  25. }

Hasta aqui el cliente por supuesto el objeto ya esta recogido anteriormente para llamar a este metodo

Código Java:
Ver original
  1. public class recibir {
  2.    
  3.     int puerto =3000;
  4.     String fichero = "c:/dias.txt";
  5.     FileWriter ficheros = null;
  6.     ObjectOutputStream ficheroo;
  7.     public recibir(){
  8.     try{
  9.     ficheros = new FileWriter(fichero,true);
  10.     ServerSocket servidor = new ServerSocket(puerto);
  11.    
  12.     while(true){
  13.         System.err.println("esperando");
  14.         Socket con = servidor.accept();
  15.         (new PocesaConexion(con,ficheros,ficheroo)).start();
  16.     }
  17. }
  18.     catch(UnknownHostException ex){
  19.             System.err.println("host");
  20. }
  21.     catch(IOException ex){
  22.         System.err.println("datos");
  23.     }
  24.     finally{
  25.         try{
  26.             ficheros.close();
  27.         }
  28.         catch(IOException ex){
  29.             System.err.println("datos");
  30.         }
  31.     }
  32. }
  33. }

Código Java:
Ver original
  1. public class PocesaConexion extends Thread{
  2.    
  3.     Socket sc;
  4.     FileWriter f;
  5.     ObjectOutputStream fichero;
  6.     Object o;
  7.  
  8. public PocesaConexion (Socket sc, FileWriter f, ObjectOutputStream fichero){
  9.     this.sc=sc;
  10.     this.f=f;
  11.     this.fichero=fichero;
  12. }
  13. public void run(){
  14.     try{
  15.      
  16.         in= new ObjectInputStream(sc.getInputStream());
  17.         o = (Object)in.readObject();
  18.        
  19.         synchronized(fichero){
  20.             fichero.writeObject(o);
  21.             fichero.flush();
  22.             fichero.close();
  23.         }
  24.     }
  25.     catch(IOException ex){
  26.         System.err.println(ex+"dd");
  27.     }   catch (ClassNotFoundException ex) {
  28.         System.err.println("dd");
  29.             Logger.getLogger(PocesaConexion.class.getName()).log(Level.SEVERE, null, ex);
  30.         }
  31. }
  32. }

y este es el error en cuestion
mar 22, 2015 11:08:18 AM cliente.PocesaConexion run
GRAVE: null
java.lang.ClassNotFoundException: agenda.usuarios
at java.net.URLClassLoader$1.run(URLClassLoader.java: 372)
at java.net.URLClassLoader$1.run(URLClassLoader.java: 361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:4 24)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 57)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:344)
at java.io.ObjectInputStream.resolveClass(ObjectInput Stream.java:626)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectI nputStream.java:1613)
at java.io.ObjectInputStream.readClassDesc(ObjectInpu tStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(Objec tInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputS tream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputSt ream.java:371)
at cliente.PocesaConexion.run(PocesaConexion.java:44)

Agenda usuarios es el objeto que se encuentra en el cliente.
Muchas gracias