jueves, 14 de marzo de 2013

5 - La estrucutra de los mensajes

La forma en que se estructura un mensaje es importante (desde y hacia, un cliente o un servidor). Es decir, como pasar los datos entre estos.
 Los datos deben ser enviados en el orden en que serán leídos!!! Esta sección listará los comandos para escribir información en un mensaje que enviarás desde el cliente al servidor.
Un "mensaje" es un paquete de datos que tu envías, puede contener cadenas, enteros, bytes, doubles, etc. Los datos que escribes en un mensaje desde el cliente , debe leerse en el mismo orden desde el servidor, por ejemplo:
(El cliente envía el siguiente mensaje al servidor:
Nota: todos estos datos están en el mismo mensaje)


1 (es el byte del que hablaba anteriormente, le dice al servidor como debe leer el mensaje).

"Hello my nake is Luke"
8675309

23.87
"The cake is a Lie!!!"

(Ahora... aquí el servidor esta recibiendo el mensaje apropiadamente)

byte (Oh! mira, el primer byte, 1, nos dice que vamos a leer en este orden: una cadena, un entero, un decimal (double) y otra cadena)
string

integer
double
string

Esto es quizá difícil de entender al principio. Básicamente, el cliente está enviando un mensaje con los siguientes datos: cadena, entero, decimal, cadena. El servidor no sabe lo que hay dentro del mensaje, asi que por ello utilizamos un byte al principio, para permitir que el servidor sepa qué leer en el mensaje que recibe. Por supuesto tienes que programar en el objeto player, qué hacer cuando se recibe éste byte. Puesto que dijimos que cada objeto player es un representante de un cliente real, y es quien recibe y envía los paquetes de datos. ( y no el objeto Server, en cuestión).

Entonces, ese byte 1, hace que el switch del objeto player(en el servidor) vaya hacia el case 1 lo que le permite saber que espera una cadena, un entero, un decimal, y otra cadena.
 Esta es la forma en que siempre se estructura. El byte al comienzo es el case   en la estructura switch. Entonces, volvemos al código:



mid = readbyte(); 
switch(mid){ case 0: break; 
 case 1: break; // nada por debajo}
La variable "mid" toma el valor del primer byte recibido, entonces se dirige a la instrucción case que se asemeje al formato del mensaje.Tiene sentido? Voy a proporcionar un ejemplo de un Chat, al final de este tutorial.
Nota: Los comandos de la actual DLL se usan para agregar datos, serán explicados después del resumen.

No hay comentarios:

Publicar un comentario