Problema enviando objetos a través de Sockets

telemaco
27 de Julio del 2005
Hola a [email protected]:

Estoy empezando una aplicación cliente-servidor para enterarme un poco más de cómo funciona esta tecnoología en Java ya que soy un principiante.
He decidido probar la transferencia de datos entre cliente-servidor a través de sockets.
Lo que quiero transferir son objetos de una clase creada por mí a través de los flujos ObjectInputStream y ObjectOutputStream. Para ello he implementado la interfaz Serializable en la clase que instanciaŕa los objetos transferidos, así como todos sus atributos que no pertencen a los tipos de datos primitivos.

Bien, a la hora de enviar el objeto entre programas la conexión funciona, pero cuando el objeto llega al servidor desde el cliente (primer caso que pruebo) me salta una excepción ClassNotFound y el SERVIDOR me dice que no ha encontrado la clase serializada. El problema es que la clase que busca es la que está en el programa cliente. Esto es, el servidor me dice que no puede encontrar una clase que está en el programa cliente.
Yo tengo una clase igual en el cliente y en el servidor, solo que en distintos paquetes porque están en aplicaciones distintas. El caso es que, al leer el objeto recibido por el socket desde el servidor, me dice que no encuentra la clase que pertence al programa cliente.

Me he liado un poco, lo sé. Si alguien ha entendido algo y me puede echar un cabo merecerá la felicidad eterna :)

Graciñas

chuidiang
27 de Julio del 2005
Hola:

El problema es precisamente ese. Tanto el cliente como el servidor tienen que tener la clase que se transmite, en el mismo paquete. Si está en paquete distinto, son clases distintas, aunque se llamen igual y tengan lo mismo.

Posiblemente lo suyo es tener tres jar (tres grupos de clases). Uno con el servidor, otro con el cliente y otro con las clases que se van a enviar de un lado a otro. De esta forma, el servidor necesita al servidor y las clases que se envian. El cliente necesita el cliente y las clases que se envian.

Tienes un ejemplo de cliente servidor en http://www.geocities.com/chuidiang/java/sockets/socket.html

Se bueno.