Hola, tengo una duda que por más que busco por la red no logro solucionar, es la siguiente.
¿Cómo se consigue eliminar el sondeo con el callback? ejemplo:
Código:
//Sondeo
/* ... */
while(servidor.numero() < 5) {
/* Hacer lo que sea que haga el cliente */
}
//Callback
/* ... */
//Cuando la variable en cuestión en el servidor valga 5 o más, el cliente acaba.
Esto es porque necesito hacer el juego de hundir la flota por turnos online y en consola (con RMI) y debo repartir los turnos con callback y evitando el sondeo.
Tengo lo siguiente:
Una interfaz juego con un sólo método
String dispara(int x, int y) throws RemoteException;
El Cliente-Servidor Jugador con:
Código:
/* Matrices y variables para el juego ... */
String disparar(int x, int y) throws RemoteException {
//Devuelve "Agua", "Tocado" o "Hundido" según el resultado.
}
/* ... */
static void main(String[] args) {
Jugadorr ORem = new Jugador();
Naming.rebind("//localhost/"+args[0], ORem);
Thread.sleep(5000); //Para dar tiempo a activar los dos jugadores (5 segundos)
//Conecta con el otro jugador
juego Or = (juego)Naming.lookup("//localhost/"+args[1]);
/* Lógica del juego */
while(putos < 20) { //Gana quien llegue a 20 puntos
disparar(x,y);
//Ahora se debería repartir el turno
//En caso de agua el turno cambia y por tanto este cliente no puede disparar y esperar a que el otro dispare
//En caso de tocado sigue con el turno y el otro cliente debería seguir esperando.
}
No se si me he explicado bien.
¿Alguna referencia o ejemplo similar que me pueda resultar de ayuda?
Gracias.