Я работаю над игрой, использующей локальную сеть. Как и в большинстве многопользовательских игр, существует сервер-клиентская система. Компьютер A запускает экземпляр программы, создает сервер и ждет; Компьютер B делает то же самое. Теперь компьютер C запускает программу, я хочу, чтобы он мог видеть компьютеры A и B, перечисленные там в качестве игровых серверов. Как я могу это сделать?
Чтобы перечислить все доступные серверы, простым решением может быть следующее: мне нужно проверить все IP-адреса в определенном диапазоне и посмотреть, отвечают ли они через мой конкретный порт или нет. Если да, значит, на нем запущен экземпляр игры и должен быть указан в списке серверов.
Является ли описанное выше решение хорошим? Я искал и получить этот кусок кода:Java-сетевая игра: список доступных серверов?
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");
}
}
}
но занимает так много времени, и бесполезно. Если это неправильное решение, каковы другие способы?
Есть ли образец кода для UDP? – mehrmoudi
Я добавил 2 класса в качестве примера кода; Я не думаю, что вы можете просто запустить его в качестве примера, потому что вы, вероятно, пропустите некоторые другие необходимые классы, но это показывает udp-трансляцию. – Tom