2013-05-01 4 views
1

Я делаю приятное многопользовательское приложение, но хочу, чтобы мое приложение искало хосты в вас. Я знаю, что вы можете легко получить свой собственный IP-адрес, а затем перетащить все IP-адреса, чтобы увидеть, подключено ли что-либо, но это довольно тяжелая работа для вашего компьютера, и это занимает некоторое время, даже если вы многократно используете его.получение всех локальных ip-адресов (arp -a)

Кажется, что нет хорошего способа получить таблицу arp в java, но я надеюсь, что есть что-то подобное, где вы можете быстро и эффективно получать все локальные IP-адреса.

Любая помощь будет высоко оценена.

+0

Проверить это ... http://stackoverflow.com/questions/1238963/query-arp-cache-to-get-mac-id – SmV

+0

спасибо за реакцию. Я не ищу MAC-адреса, как он был, но для ip-адресов, поэтому я надеюсь, что кто-то может помочь мне с этим альтернативным способом. –

ответ

0

Существует несколько вариантов и их можно использовать для достижения этой цели.

децентрализованные один

Что вы можете сделать, это broadcasting запрос от приложения, которое запрашивает каждые хосты в сети, если они в настоящее время доступны для игры (отправив запрос на 255.255.255.255, например, вызовет ваш маршрутизатор для повторной передачи дейтаграмм, отправленных на каждый хост в локальной сети).

Это обеспечит ответ на этот запрос только хозяевам, у которых была запущена игра и которые готовы к игре.

Несколько широковещательных протоколов сегодня широко используются в локальной сети. Один из них - SSDP (Simple Service Discovery Protocol), который используется с протоколом UPnP для обнаружения службы. Разумеется, для многопользовательских игр есть много подходящих протоколов, используемых для широковещательной/многоадресной рассылки.

Централизованные один

Одним из наиболее распространенного способа обнаружить игрок на многопользовательскую игре остается в присутствии центрального сервера, на котором оба запрашивающей (люди, которые ищут для игры) и хосты (люди, которые размещают игру) связаны.

Этот метод имеет тот недостаток, что у него есть одна точка отказа, которая является сервером, но имеет преимущество, в отличие от децентрализованного решения, как подходящего для локальной сети, так и для Интернета (или каждого протокола на основе IP).

Если бы мне пришлось разработать многопользовательскую игру, я бы начал копаться в отношении функции обнаружения хоста, которую вы должны реализовать.