2009-04-02 15 views
7

Solo quiero saber si hay un tutorial o un tutorial para serializar objetos, colocarlos en una transmisión a través de la red y deserializarlos en el otro lado. Entiendo los principios de serialización, E/S, transmisiones, sockets, etc., solo me gustaría un ejemplo de un cliente que envía un objeto a un servidor para comenzar.Serialización de Java a través de la red

Respuesta

9

This (pdf) es un tutorial útil que lo guía a través de los conceptos básicos de serialización y sockets, luego vincula los dos conceptos (aproximadamente a la mitad de las diapositivas) para mostrar cómo serializar un objeto y enviarlo desde el cliente a servidor (sin RMI). Creo que eso es precisamente lo que quieres.

+0

¡Demuestre realmente cómo usar serialización Y zócalos, gracias! – elbaid

7

Es bastante simple, en realidad. Simplemente haga que sus objetos sean serializables, y cree un ObjectOutputStream y ObjectInputStream que estén conectados a cualquier flujo subyacente que tenga, por ejemplo, FileInputStream, etc. Luego simplemente escriba() el objeto que desee y lo lea en el otro lado.

Aquí hay example para usted.

+1

Es posible que desee ser un poco más cuidadoso acerca de cerrar sus recursos que ese ejemplo. –

5

Java proporciona serialización de objetos (binarios) utilizando ObjectOutputStream (y ObjectInputStream). Puede simplemente writeObject() en la secuencia y readObject() en el otro extremo. Todo lo que necesita hacer para que esto funcione es implementar la interfaz Serializable.

Pero en lugar de hacerlo manualmente, puede interesarle subir un nivel y usar Remote Method Invocation. Con RMI puede llamar a métodos en objetos que viven en otra JVM, y toda la serialización y la interconexión se realizan bajo el capó.

Y para completar, también hay XML bean serialization, si no puede usar el formato binario. Ese formato XML es muy genérico (léase: prolijo y feo), pero hay algunas bibliotecas populares (como XStream) que crean serializaciones XML alternativas.

+0

XStream también ofrece serialización JSON (con Jettison) que puede ser muy útil en proyectos multilingües: www.json.org – mjn

+0

Nunca escuché acerca de RMI, parece que WCF en la tecnología de Microsoft, espero no estar equivocado ... Gracias por la idea! – elbaid

2

puede crear secuencias de objetos utilizando la API java y enviar cualquier objeto serializable. pero usted tendrá a la mente que estos van sin cifrar a través de la red:

en el lado del remitente:

CustomObject objectToSend=new CustomObject(); 
Socket s = new Socket("yourhostname", 1234); 
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); 
out.writeObject(objectToSend); 
out.flush(); 

y en el extremo receptor:

ServerSocket server = new ServerSocket(1234); 
Socket s = server.accept(); 
ObjectInputStream in = new ObjectInputStream(s.getInputStream()); 
CustomObject objectReceived = (CustomObject) in.readObject(); 
Cuestiones relacionadas