Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Struct a traves de socket

Estas en el tema de Struct a traves de socket en el foro de C/C++ en Foros del Web. Gentee alguien sabe como se puede mandar un struct en C a traves de sockets...
  #1 (permalink)  
Antiguo 15/09/2010, 19:38
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 18 años
Puntos: 0
Struct a traves de socket

Gentee alguien sabe como se puede mandar un struct en C a traves de sockets
  #2 (permalink)  
Antiguo 16/09/2010, 08:32
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Struct a traves de socket

La forma "guarra" de hacerlo sería haciendo un casting del struct a un array de bytes y enviar dicho array. En el cliente, sólo tienes que recoger este array y hacer de nuevo un casting a tu struct. Esto, sin embargo, conlleva varios problemas:
- En ambas máquinas tienes que tener el struct declarado de la misma forma
- Si la arquitectura de las máquinas (o las opciones del compilador) son diferentes, es probable que los campos del struct esten ordenados de formas diferentes dentro de cada máquina de modo que al realizar el casting inverso, muy probablemente, los datos pasen de una variable a otra y no te sirvan.
- Al realizar el envío, debes conocer el tamaño exacto del struct para no enviar de mas ni de menos

Todo esto es un engorro de modo que te recomiendo la forma "tradicional": Concatenar todos los datos con un delimitador que no pueda salir en ninguno de ellos y realizar la conversión inversa en el cliente.
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM
  #3 (permalink)  
Antiguo 19/09/2010, 15:30
 
Fecha de Ingreso: mayo-2008
Ubicación: Chile
Mensajes: 189
Antigüedad: 16 años
Puntos: 3
Respuesta: Struct a traves de socket

hacer un cast, es lo peor que puedes hacer, yo lo he hecho y trae consecuencias que uno no se explica(aunque a veces funciona bien), como dijo genuine carlos, lo mejor es determinar un delimitador, por ejemplo |, o algo que sepas que no se filtrara por casualidad.
__________________
si tienes entre 18 y 20 años... entonces tienes 19 años xD

Etiquetas: socket
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:24.