Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Diciembre 02, 2008, 01:50:23
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Foro de Java, C++ y más.

Nuevo foro de Control de versiones.

+  Foros Java y C/Linux
|-+  Programación
| |-+  C/C++ linux
| | |-+  cliente C++ que envia datos serializables UDP a un servidor java
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: cliente C++ que envia datos serializables UDP a un servidor java  (Leído 239 veces)
joanbn
Newbie
*
Mensajes: 1


Ver Perfil


« en: Julio 22, 2008, 08:50:24 »

Hola,

tengo un cliente C++ que necesita enviar datos de forma UDP a un servidor JAVA. Se que los datos tienen que ser serializables. Segun este link http://www.chuidiang.com/chuwiki/index.php?title=Serializaci%C3%B3n_de_objetos_en_java
el servidor java tiene que pasar de byte[] a serializable, ya que son datagramas UDP lo que recibe. Por lo tanto el codigo hace:

    ByteArrayInputStream byteArray = new ByteArrayInputStream(dato.getData());
    ObjectInputStream sis = new ObjectInputStream(byteArray);

En la segunda linia surge un error: invalid streamHeader, por lo que entiendo que el cliente C++ no serializa bien los datos. Los envio de esta manera:

       class data {
        public:
        int value;
       };
        ...
   data buffer(1234);   
   ofstream ofs("binary.txt", ios::binary);
   ofs.write((char *)&buffer, sizeof(buffer));
        sendto(Descriptor, (char *)&ofs, sizeof(ofs), 0,
      (struct sockaddr *)&Direccion, longitudDireccion)

Por lo que no encuentro otra manera de serializar los datos como bytes para que el servidor los lea bien.

Tambien sospecho que podria ser algun problema sobre el orden de los bits, que segun la plataforma usa Litle-endian o al reves.

Os agradezco es ayuda.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #1 en: Julio 22, 2008, 09:34:31 »

Hola:

Un Serializable de java no es compatible con ningún formato de otros mensajes y es difícil reproducirlo. Siempre es más fácil hacer el código java necesario para que envíe el mensaje en un formato que otros lenguajes, como C++ sean capaces de entender.

Tienes un ejemplo de todo esto en socket entre java y C.

Se bueno.
En línea

Páginas: [1] Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!