получение всех локальных IP-адресов (arp -a)

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

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

Любая помощь приветствуется.


person Daan Luttik    schedule 01.05.2013    source источник
comment
Проверьте это... stackoverflow. ком/вопросы/1238963/   -  person SmV    schedule 02.05.2013
comment
спасибо за реакцию. Я ищу не MAC-адреса, как он, а IP-адреса, поэтому я надеюсь, что кто-то может помочь мне с этим альтернативным способом.   -  person Daan Luttik    schedule 02.05.2013


Ответы (1)


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

Децентрализованная

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

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

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

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

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

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

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

person Halim Qarroum    schedule 01.05.2013