Sie sind auf Seite 1von 3

Juego de azar, en el que los jugadores tienen que adivinar el nmero total de piezas (monedas,

piedras, fichas...) que los jugadores guardan en su mano derecha cerrada.

Protocolo ABNF
Servicio: solicitud para ingresar un nombre de usuario en el servidor.

MensajeName = mNameReq / MensajeNameResp FL RC

MensajeNameResp = mNameRespNeg / mNameRespConf

mNameReq= Introduce nombre de usuario DP SP nombre


mNameRespNeg= Nombre de usuario ya cogido
mNameRespConf= Nombre de usuario aceptado

SP= ; espacio
DP= :; dos puntos
nombre= 1*56 (caracteres)
caracteres= (a z) / (A Z)

FL= \n
RC= \r

**Nota: nombres no disponibles: servidor o mquina.

Servicio: solicitud para jugar.

MensajeJugar = mJugarReq / MensajeJugarResp FL RC

MensajeJugarResp = mJugarRespConf / mJugarRespNeg

mJugarReq= Are you ready?


mJugarRespConf= OK
mJugarRespNeg= NO OK
FL= \n
RC= \r

Servicio: solicitud para elegir rival (en nuestro caso el juego ser cliente servidor).

MensajeElegirRival = mElegirRivalReq / mElegirRivalResp FL RC

mElegirRivalReq= Seleccionar rival DP SP (maquina / rival online)


mElegirRivalResp= Oponente DP SP nombre
nombre= 1*50 (rival)
rival= Servidor / Cliente
FL= \n
RC= \r
Servicio: solicitud para elegir el nmero de rondas que tendr la partida. Se puede dar el
caso que sean por defecto, es decir, 3 rondas.

MensajeElegirRonda = MensajeSolicitudRonda / MensajeRespuestaRonda FL RC

MensajeSolicitudRonda = mElegirRondaReq / mRondaDef


mElegirRondaReq= Elijo el nmero de rondas DP SP 1*1(numero)
mRondaDef= Ha seleccionado rondas por defecto (3)

MensajeRespuestaRonda = mElegirRondaResp / mElegirRondaNeg


mElegirRondaResp= Numero de rondas para ganar DP SP numero
mElegirRondaNeg= Numero de rondas no aceptado

numero= (1 9)
SP= ; espacio
DP= :; dos puntos
FL= \n
RC= \r

Servicio: mensaje en el que se implementa el hash del nmero generado por el


cliente/servidor. Este sirve para evitar posibles trampas tanto por parte del servidor
como por parte del cliente.

MensajeHash = mHashServ / mHashCli FL RC

mHashServ= HashServ SP [hashMensaje]


mHashCli= HashCli SP [hashMensaje]

hashMensaje= hash -sha[mano, numAleatorio]


mano= 1*1 (digitos0a3)

digitos0a3= (0 3)
FL= \n
RC= \r

MensajeNumRand = mNumRandServ / mNumRandCli FL RC

mNumRandServ= 1*1 (numeroAleatorio)


mNumRandCli= 1*1 (numeroAleatorio)

numeroAleatorio= 1*3 (digito); Puede ser de 0 a 999

digito= (0 9)
FL= \n
RC= \r
Servicio: nmero generado por el cliente/servidor a la hora de apostar.

MensajeApuesta = mApuestaServ / mApuestaCli FL RC

mApuestaServ= Apuesta servidor DP SP 1*1(digito0a6)


mApuestaCli= Apuesta cliente DP SP 1*1(digito0a6)
digito0a6= (0 6)
FL= \n
RC= \r

Servicio: mensajes fin de ronda generados por el cliente/servidor.

MensajeFinServidor = mCierraConexion / mSiguienteRonda / mFinDeJuego FL RC


MensajeCliente = mTrampa / mOk FL RC

mCierraConexion= Conexin cerrada


mFinDeJuego= Ganador DP SP nombre SP resultado DP SP numero GU
numero
mSiguienteRonda= Ronda nmero DP SP numero
mTrampa= Se ha detectado un comportamiento anmalo
mOk= OK
mMensajeGanadorRonda= El ganador de la ronda es DP SP nombre
nombre= 1*56 (caracteres)

caracteres= (a z) / (A Z)
nmero= (1 9)
SP= ; espacio
DP= :; dos puntos
GU= -; guion
FL= \n
RC= \r

**Nota: suponemos que el nmero mximo de rondas a jugar son 9.

Das könnte Ihnen auch gefallen