AlberLo MaLeos Checa lmplemenLacln del [uego de averlguar un numero uLlllzando la Lecnologla 8Ml de !ava. !" !"#$%&'(()*"!- RNI es una tecnologia piopia ue }ava que peimite ejecutai mtouos ue foima iemota. Paia ello, es necesaiio el uso ue un iegistio (RNIRegistiy) en el que se iegistian los objetos uel seiviuoi sobie los que, posteiioimente, se iealizain las llamauas iemotas.
Paia la elaboiacion ue la taiea es impiescinuible iealizai los siguientes pasos: 1. Befinii una inteifaz iemota. 2. Implementai el seiviuoi. S. Implementai el cliente.
A continuacion se uetallan los pasos anteiioies.
!" !"#$%$&$'% )" !" $%&'()"* ('+,&"!- Paia hacei uso ue RNI hay que uisponei ue una inteifaz iemota. Esta no es mas que una inteifaz (tipo ue clase) que uebe ue extenuei ue la clase !"#"$%&'$()&*+). En este caso, la inteifaz iemota se ha implementauo con el nombie ,-).*$!"#".
En la inteifaz se uefinen los mtouos que se van a ejecutai sobie los objetos iemotos peio no se implementa el couigo piopio ue uichos mtouos, tal y como se hace con las clases inteifaz ue }ava habitualmente. Be esta foima, en este caso, los mtouos uefiniuos han siuo uos:
o '/'0'"%,-).*12: el cliente ejecutai este mtouo paia comenzai una nueva paitiua. Bevuelve un Stiing que sei el mensaje ue iespuesta uel seiviuoi. o 0*&3%*4"%5-&)%*1'/+ /-&)%*78')/+)29 el cliente ejecutai este mtouo paia peuiile al seiviuoi que compiuebe si el nmeio que se le pasa como paimetio es el nmeio buscauo. Bevuelve un Stiing como mensaje ue iespuesta uel seiviuoi.
!" !"#$%"%&'()*+& -%$ .%/0*-1/!- La clase seiviuoi sei la encaigaua ue implementai los mtouos iemotos que han siuo uefiniuos en la inteifaz. Es poi ello que la clase :)%#';*%$!"#" '&38)&)/+" ,-).*$!"#". Be esta foima, tanto los mtouos iniciai}uego() como compiobaiNumeio() son implementauos en esta clase, uefinienuo el couigo que se ejecutai en caua caso. Bebiuo a la sencillez ue la aplicacion no se va a explicai el couigo empleauo paia caua caso.
Auems ue implementai los mtouos iemotos, la clase :)%#';*%$!"#" incluye en el mtouo main la cieacion uel objeto que se va a compaitii asi como su iegistio. Paia ello se utiliza el siguiente couigo:
Como pueue veise, tias cieaise un objeto ue la clase Seiviuoi, ste se uefine como iemoto uel tipo }uego (la inteifaz iemota). Posteiioimente, tias obteneise el iegistio ue RNI, se une el objeto al iegistio paia que sea accesible uesue los clientes.
!" !"#$%"%&'()*+& -%$ )$*%&'%!- La clase 78')/+)$!"#" es tambin muy sencilla, iealiznuose las opeiaciones meuiante un bucle piincipal uel tipo uo-while que se encuentia uentio uel mtouo main ue la clase. Be esta foima, se solicita que se intiouuzca un nmeio a tiavs ue la entiaua estnuai (consola) hasta que se acieita el nmeio que piopone el seiviuoi o se supeia el nmeio mximo ue intentos, momento en el cual se cieiia la aplicacion.
Paia compiobai si el nmeio intiouuciuo es mayoi, menoi o el buscauo se hace uso uel mtouo iemoto compiobaiNumeio(). Be la misma foima, paia comenzai la paitiua se usa el mtouo iniciai}uego().
Poi tanto, ya que se hace uso ue mtouos iemotos, es necesaiio uisponei un objeto que se encuentie en el iegistio sobie el que ejecutai los mtouos. Paia ello, se implementa el siguiente couigo:
Be esta foima, lo que se hace es obtenei el iegistio RNI a tiavs ue la uiieccion IP en la que se encuentia ste (localhost en este caso) y, posteiioimente, buscai el objeto sobie el que se van a ejecutai los mtouos. Este objeto se tiene ue foima local y se pueue utilizai paia ejecutai cualquiei mtouo ue los que fueion uefiniuos en la inteifaz iemota. En el couigo anteiioi vemos que se inuica la oiuen ue iniciai un nuevo juego, obteninuose la iespuesta uel seiviuoi en un Stiing que es lo que uevuelve el mtouo iniciai}uego().
Servidor obj = new Servidor(); Juego stub = (Juego)UnicastRemoteObject.exportObject(obj, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("Juego", stub); Registry registry = LocateRegistry.getRegistry("127.0.0.1"); Juego stub = (Juego) registry.lookup("Juego"); String respuesta = stub.iniciarJuego(); !! #$%&'()*+%!- Paia la ejecucion uel juego lo piimeio que hay que hacei es iniciai el iegistio ue RNI en el seiviuoi:
A continuacion, se ejecuta el seiviuoi, el cual se mantiene a la espeia ue peticiones uel cliente:
0na vez que el seiviuoi est a la espeia, se pioceue a la ejecucion uel cliente, con el consecuente inicio uel juego:
Como pueue veise, al lanzai el cliente se inicia el juego, geneinuose un nmeio ue foima aleatoiia en el seiviuoi. El cliente se mantiene a la espeia ue que el jugauoi intiouuzca un nmeio a tiavs ue la consola.
Los nmeios que intiouuzca el cliente pueuen sei mayoies, menoies o iguales al que se ha geneiauo en el seiviuoi (S en este caso). Be esta foima, segn el nmeio intiouuciuo, el seiviuoi uevuelve al cliente un mensaje inuicanuo el iesultauo:
Como pueue veise en la captuia anteiioi, en caso ue que se piouuzca un acieito el piogiama cliente finaliza, inuicnuose antes que se ha aceitauo el nmeio. Auems, caua vez que se intiouuce un nmeio, el seiviuoi inuica tambin el nmeio ue intentos que iestan. En caso se supeiai el nmeio ue intentos posibles el piogiama cliente finaliza con el siguiente iesultauo:
Excel para principiantes: Aprenda a utilizar Excel 2016, incluyendo una introducción a fórmulas, funciones, gráficos, cuadros, macros, modelado, informes, estadísticas, Excel Power Query y más
El mercado del forex de una forma sencilla: La guía de introducción al Mercado del Forex y de estrategias de trading más eficaces en el sector de las divisas