Foros del Web » Programación para mayores de 30 ;) » Java »

recibir objetos por socket

Estas en el tema de recibir objetos por socket en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/03/2015, 04:04
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 8 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
  #2 (permalink)  
Antiguo 22/03/2015, 05:28
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: recibir objetos por socket

Hola:

La clase agenda.usuarios tiene que estar en los dos lados, cliente y servidor.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 22/03/2015, 09:32
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: recibir objetos por socket

Aun asi no me sigue tirando el mismo error esta el objeto usuarios en el cliente y en el servidor
  #4 (permalink)  
Antiguo 22/03/2015, 11:21
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: recibir objetos por socket

Hola:

Si el error es el mismo, es java.lang.ClassNotFoundException: agenda.usuarios

si no encuentra la clase, es que no está. Revisa cómo la has añadido.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: objetos, recibir, socket, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:13.