Java - JAVA Y C++!!!!!!!!!!!!!!!!!!!!!!!!

 
Vista:

JAVA Y C++!!!!!!!!!!!!!!!!!!!!!!!!

Publicado por Clara (29 intervenciones) el 21/05/2002 10:50:01
Hola a todos,
Mi problema es el siguiente:
Yo tengo una aplicación cliente/servidor, de modo que la parte cliente está hecha en Java y la parte servidor en C++. La parte cliente a su vez se compone de un applet y un servlet. De forma que cuando yo envío datos entre el applet y servlet como utilizo el mismo tipo de flujos de datos no hay problema, pero entre el servlet y el servidor si yo quiero que el servlet me envíe 20 caracteres, le he tenido que enviar de antemano una cadena de 20 caracteres desde el servlet para que el servidor pueda enviarme al cadena de 20 caracteres.

Mi pregunta es la siguiente: ¿Puedo de alguna forma establecer el tamaño de recepción de caracteres de un flujo de java para que permanezca con esa longitud constantemente, sin tener que enviar yo primero una cadena de X longitud para q luego puedan enviarme una cadena de la misma X longitud?

Espero haberme explicado bien. Mchas gracias de antemano a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:JAVA Y C++!!!!!!!!!!!!!!!!!!!!!!!!

Publicado por chuidiang (532 intervenciones) el 21/05/2002 18:49:30
No sé cómo haces la conexión entre el servidor C++ y el cliente java. Si es con socket, puedes tener un problemilla con los tamaños de los tipos básicos.
En la parte de C++, el tamaño de un char, un entero, etc, etc, depende de la máquina. En la parte de java no, puesto que java lo impone. Lo normal es que sean distintos. Por ejemplo, lo habitual en cualquier ordenador es que un char sea de un byte. En java creo que es de dos bytes. Resultado, si envias un char desde java, envias dos bytes y el C++ lee dos char. El problema está aunque ejecutes en dos ordenadores igualitos.
Con los enteros tienes además el problema de cómo se ordenan los bytes (primero los más significativos o los menos), con lo que además tienes que darles la vuelta a los bytes.
No sé si éste es tú problema, pero te lo cuento por si te sirve de ayuda.

Sé buena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JAVA Y C++!!!!!!!!!!!!!!!!!!!!!!!!

Publicado por Clara (29 intervenciones) el 22/05/2002 10:01:38
Gracias por la aclaración.
Para conectar el servidor C++ con la parte java lo hago a través de socket como tú dices.
Ya me imaginaba que tendría algo que ver con que java y C++ no se entendían muy bien, pero, ¿entonces no hay forma de solucionar el problema?
Muchas gracias de antemano y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JAVA Y C++!!!!!!!!!!!!!!!!!!!!!!!!

Publicado por chuidiang (532 intervenciones) el 22/05/2002 23:00:42
Hay varias formas.
La más sencilla, aunque más trabajosa, es que en alguno de los dos lados, por ejemplo, el cliente java, antes de enviar convierta los char o enteros a bytes en el mismo formato que los entiende el servidor. Al recibir los bytes del servidor, debe leerlos como bytes y convertirlos a su propio formato. La pega de esto es que el cliente java tiene que saber en qué tipo de ordenador (16 bits, etc) corre el servidor.

Otra forma es que te inventes tu un formato propio, por ejemplo, bytes ascii, de forma que un entero 123 lo conviertes a "123" en el que cada caracter ocupa un byte. Tanto cliente como servidor deberían convertir a ese formato sus datos antes de enviarlos por el socket. De esta manera tocas en los dos lados, pero ninguno sabe en qué tipo de ordenador corre el otro. Podrías cambiar el ordenador del servidor sin tener que tocar el cliente.

Finalmente, puedes usar algo de más alto nivel que los sockets, como CORBA.

Se buena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:JAVA Y C++!!!!!!!!!!!!!!!!!!!!!!!!

Publicado por Clara (29 intervenciones) el 23/05/2002 17:49:07
Muchas gracias por la ayuda, creo que me ha aclarado un poco las ideas. Probaré tus sugerencias a ver que ocurre.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar