Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Diciembre 02, 2008, 01:39:32
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
| | |-+  Problema con sockets en C
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: Problema con sockets en C  (Leído 242 veces)
barkley8
Newbie
*
Mensajes: 4


Ver Perfil


« en: Junio 02, 2008, 09:41:16 »

Hola!!

Tengo que hacer un cliente y un servidor en C.

Cuando el cliente se conecte al servidor, el cliente manda un mensaje y el servidor le contesta con este mismo tipo de mensaje con un texto predefinido.

El texto se manda como un vector de caracteres,siendo el primer byte el identificador del tipo de mensaje,los 4 siguientes el tamaño y lo siguiente el cuerpo del mensaje.

Tengo el cliente y el servidor funcionando,se conectan sin problemas,pero no consigo mandar el mensaje.

Muchas gracias de antemano...
Un saludo!
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #1 en: Junio 02, 2008, 10:15:57 »

Hola:

Si estás usando estructuras para enviar el mensaje (por ejemplo, una estructura con el byte de identificador y el entero de la longitud), ten cuidado de leerla exactamente igual que la escribes y me explico.

Un byte dentro de la estructura ocupa un byte, pero para cuadrar el entero que va detrás, C deja en la estructura tres bytes vacios. Asi

- byte id - byte vacio - byte vacio - byte vacio - byte longitud - byte longitud - byte longitud - byte longitud

Si envias la estructura completa con un solo write y luego intentas leer primero el read del id y luego el read de la longitud, tendrás problemas, ya que estarás leyeno los bytes vacios como parte de la longitud.

Aquí tienes un ejemplo de cómo puedes organizar los mensajes en los sockets.

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!