My favorites | Sign in
Project Home Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
JavaClient  
Funcionamiento del Cliente Java
Updated Jul 29, 2010 by msdark...@gmail.com

Introduction

Para la creación de un cliente Java (RIM o Blackberry) es necesario solucionar un problema: ENDIANS El servidor C# utiliza para la creación de array de bytes el formato LITTLE_ENDIAN mientras que Java usa BIG_ENDIAN lo que provoca que no se directa la comunicación.

Esto se soluciona modificando el servidor para que envie en LITTLE_ENDIAN la información.

Details

Al igual que el Cliente en C# este código de ejemplo (clienteJava en el repositorio) tiene como funcionamiento: Conectarse - Recibir bienvenida - Enviar mensaje de LIST - Recibir LIST - mostrar LIST -desconectarse.

Para recibir los mensajes del servidor se utiliza, igual que en C# una clase Mensaje que permite serializar el objeto a XML o viceversa (deserializar).

byte[] data = Recibir(server);
FileOutputStream fs = new FileOutputStream(new File(".").getCanonicalPath()+"/xml/recibido.xml");
fs.write(data);
fs.close();
//obtener el id de cliente dese el mensaje de bienvenida recibido
Mensaje mensaje = new Mensaje();
mensaje.Deserialize(new File(new File(".").getCanonicalPath()+"/xml/recibido.xml"));
}}

Este codigo muestra como recibir un mensaje( siendo server una referencia a Socket).
Se crea un archivo _recibido.xml_ y luego se deserializa para poner la información dentro del objeto *Mensaje* referenciado por _mensaje_

Para enviar información al servidor, se debe crear un objeto Mensaje, utilizando el id de cliente recibido desde el servidor (en el mensaje de bienvenida).
{{{
enviar un mensaje LIST 
mensaje.setTipo(Mensaje.MsgType.LIST);
mensaje.setContenido("Listado de Videos");
//se envia la solicitud de listado
SendMsg(server,mensaje);
}}}

El codigo anterior envía un mensaje tipo LIST al servidor, por lo que el servidor responde con un archivo xml que contiene el listado de videos. Para utilizar esa información se utiliza otra clase *VideoList* que almacena la información de un video y se usa *java.util.List<VideoList>* para almacenar un listado de esos objetos:
{{{
byte[] data = Recibir(server);
fs = new FileOutputStream(new File(".").getCanonicalPath()+"/xml/listado.xml");
fs.write(data);
fs.close();
System.out.println("Listado recibido... Mostrando...");
File file = new File(new File(".").getCanonicalPath()+"/xml/listado.xml");
List<VideoList> listado = VideoList.Deserialize(file);
Iterator it = listado.iterator();
while(it.hasNext()){
    VideoList v = (VideoList)it.next();
    System.out.println("Titulo "+v.getTitulo());
    System.out.println("\tID: "+v.getId()+" | Path: "+v.getPath());
}
}}}

Este código muestra como recibir el listado de videos y como mostrar el contenido de los objetos (se usa la funcion _Deserialize()_ ).

Una vez que se tiene el listado de video (_List<VideoList>_ ) se debe recorrer y mostrar por pantalla.

== TODO ==
*  Permitir al usuario seleccionar un video y realizar la peticion de ese archivo al servidor basado en su id.
*  Recibir el archivo de video utilizando la función _Recibir_ y escribirlo en el disco utilizando una función que asegure la integridad del archivo, simil a _BinaryWriter_ de C# como _DataOutputStream_
Powered by Google Project Hosting