Programacion cliente/servidor

sergio
05 de Enero del 2005
Hola, estoy empezando con la programacion de clientes y servidores y tengo un pequeño problema.
Cuando el cliente recibe el mensaje del servidor, en principio una estructura con 3 campos de cadenas de caracteres, no me deja acceder a ninguno de ellos cuando los intento imprimir por pantalla. Tambien he probado a copiar los valores a otra variable del mismo tipo y lo que se me copia es la cadena vacia. He probado tambien a mandar solo una cadena de caracteres simple y en el cliente tampoco me deja acceder.
Lo que me sorprende es que la prueba que realice reenviando al cliente sin modificar el paquete en el servidor no me da ningun problema y me deja acceder perfectamente a los campos de este una vez devuelto por el servidor. De lo que deduzco que sera problema de cómo acceder a l dato recibido en el servidor.

El protocolo que utilizo es UDP, aunque he proibado tb en TCP y me pasa lo mismo. El compilador es el gcc y el SO Debian 3.0.

Gracias

chuidiang
05 de Enero del 2005
¿Qué quiere decir que no te deja acceder?
¿Da un error de acceso ??? ?
¿Sale algo que no es lo que esperas?

Haz una prueba con un entero a ver si lo lees bien o no.

Las cadenas son algo traicioneras. Haz que los tamaños de los arrays de caracteres sean múltiplos de 4. Revisa que se envían todos los caracteres, incluido el del final de la cadena. Es más debes enviar incluso los que no tienen valor. Por ejemplo, si tienes como campo de la estructura

char cadena [100];

y guardas dentro solo "hola", debes enviar los 100 caracteres, aunque hola mas el fin de cadena solo sean 5.

Además, la estructura debe ser con arrays de char, no con punteros. No vale char *cadena. Si este es tu caso, debes enviar los campos uno en uno, no puedes enviar la estructura de un solo golpe.

Se bueno.