Estoy trabajando en un juego que usa una red de área local. Como la mayoría de los juegos multijugador, hay un sistema servidor-cliente. La Computadora A ejecuta una instancia de programa, crea un servidor y espera; La computadora B hace lo mismo. Ahora que Computer C ejecuta el programa, lo que quiero es que pueda ver las computadoras A y B listadas allí como servidores de juegos. ¿Cómo puedo hacer esto?
Para listar todos los servidores disponibles, una solución simple podría ser esta: necesito verificar todas las direcciones IP en un rango particular y ver si responden a través de mi puerto específico o no. En caso afirmativo, se ejecuta una instancia de juego y debe figurar en la lista de servidores.
¿Es la solución descrita arriba una buena? He buscado y sale este trozo de código:Juego de red Java: ¿cómo enumerar los servidores disponibles?
public void checkHosts(String subnet){
int timeout=1000;
for (int i=1;i<254;i++){
String host=subnet + "." + i;
if (InetAddress.getByName(host).isReachable(timeout)){
System.out.println(host + " is reachable");
}
}
}
pero es toma mucho tiempo y es inútil. Si no es la solución correcta, ¿qué otras maneras?
¿Tiene algún código de muestra para UDP? – mehrmoudi
Agregué 2 clases como código de ejemplo; No creo que solo puedas ejecutarlo como ejemplo, porque probablemente te pierdas algunas otras clases necesarias, pero muestra la transmisión udp. – Tom