Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2009, 16:11
druha
 
Fecha de Ingreso: marzo-2009
Mensajes: 16
Antigüedad: 15 años, 1 mes
Puntos: 0
Datos binarios sobre sockets

Hola, estoy programando un cliente que tiene que enviar mensajes con este formato a un servidor:

<4 bytes><1 byte><4 bytes><4 bytes><4 bytes>

Donde los campos de 4 bytes son enteros. Como no tenía muy claro como construir un mensaje así (hasta ahora la mayor parte de lo que había hecho con sockets había sido enviando strings), lo único que se me ocurrió fue crearme una estructura:

Código:
struct request {
	int lon;
	unsigned char id;
	int index;
	int begin;
	int length;
};
Para probar a ver como funcionaba la cosa me hice este código:

Código:
	struct request peticion;
	peticion.lon=(0xd);
	peticion.id=0x06;
	peticion.index=(0x1);
	peticion.begin=(0x2);
	peticion.length=(0x3);
	write(sock,(void *)&peticion,17);
Y monitoricé con el Wireshark a ver que pasaba. Lo que se envió fue esto:

00000006 2B000001 00000002 00000003

Tiene un ligero parecido con la realidad pero no es lo que debería hacer según entiendo yo. Qué es lo que se me está pasando?