Linux - pasando flotantes mediante sockets...

 
Vista:

pasando flotantes mediante sockets...

Publicado por manuel (21 intervenciones) el 18/12/2003 21:06:52
Saludos a todos y FELIZ NAVIDAD!!!

Alguien me puede decir como pasar flotantes, dobles, entre sockets.
Hasta donde he leido, solo puedo pasar long y short y char. Pero decimales?

Lo unico que se me ocurre es quiza pasarlos como string o convertirlos a long?

Alguna sugerencia o alguna direccion donde haya documentacion al respecto?

Saludos
Manuel
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:pasando flotantes mediante sockets...

Publicado por chuidiang (101 intervenciones) el 26/12/2003 11:46:30
Puedes pasa un flotante o double como cualquier otra cosa

double valor = 2.33;
send (socket, &valor, sizeof(double));

Lo único que debes tener en cuenta es que tanto el que envía como el que recibe lo hagan en el mismo formato. Un double o float puede representarse de distinta manera en distintos micros, y lo que uno envia puede no tener sentido en el otro. Si comunicas dos PC con intel entre si no tendrás ningún problema. Si comunicas un Intel con un Power PC o con un Sparc, seguramente sí los tengas.

Si este es tu caso, no te queda más remedio que mandarlo como cadena de caracteres o inventarte otro formato (por ejemplo, enviar dos enteros que sean mantisa y exponente

Por ejemplo, para enviar 3.1416 puedes enviar
31416 y -4, de forma que el número con decimales es

31416 * 10**(-4)

o cualquier otro invento que se te ocurra.

Se bueno.
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:pasando flotantes mediante sockets...

Publicado por manuel (21 intervenciones) el 27/12/2003 07:21:03
Eso ultimo, era mi inquietud...

ya probe con pasar un objeto de pc a pc, de la misma arquitectura y usando gcc de la misma version en ambas, y no tuve problemas.

Mi inquietud era, en el caso de pc's de diferentes arquitecturas.
Ya probecon pasar un numero como string, para luego, en el receptor, convertir la cadena a numero.

Eso quiere decir que, aparte de tener la misma clase, en ambos lados (cliente y servidor), tambien necesitare algo asi como un parser, no? Me explico:
en CLIENTE en SERVIDOR
class person, parser.cpp <---------> class person, parser.cpp

saludos
manuel
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:pasando flotantes mediante sockets...

Publicado por chuidiang (101 intervenciones) el 28/12/2003 10:28:08
Efectivamente, para diversas arquitecturas necesitas convertir los datos de unas a otras.
Esto afecta también a los enteros (echa un ojo a las funciones htonl(), htons(), ntohl() y ntohs().
Si el cliente o el servidor están en Java, también afecta a los caracteres (en java un char tiene 2 bytes).

En www.geocities.com/chuidiang, dentro de java, puedes ver un ejemplo de conexion con sockets entre java y c de linux

Se bueno.
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