Я хочу найти сервер в своей локальной сети через устройство Android. Я могу найти его, используя службу NSDManager
с типом службы сервера (например, _workstation._tcp
- это тип службы).
В моей локальной сети есть Wi-Fi-маршрутизатор и Wi-Fi-повторитель, оба имеют разные SSID, но один и тот же пароль. Репитер Wi-Fi подключен к роутеру. Ретранслятор Wi-Fi имеет тот же диапазон IP-адресов, что и маршрутизатор.
Например, 192.168.0.1
— это шлюз моего маршрутизатора. IP сервера 192.168.0.100
. IP-адрес, назначенный ретранслятору Wi-Fi, — 192.168.0.101
, а устройству, подключенному к ретранслятору Wi-Fi, — 192.168.0.102
.
Когда устройство Android подключено к маршрутизатору, NDSManager
служба, которая запускается в приложении, обнаруживает тип службы сервера и предоставляет информацию о сервере. Выводится следующее:
Example [xx:xx:xx:xx:xx:xx]
Где пример — локальное имя хоста сервера, а [xx:xx:xx:xx:xx:xx] — mac-адрес сервера.
Но когда устройство подключено к ретранслятору Wi-Fi, и я хочу найти тот же сервер то он не обнаруживается службой NSDManager
. Ничего не показывает.
Почему это произошло? Является ли NSDManger правильным методом / функциональностью для поиска сервера в локальной сети? если нет то как мне найти сервер в локальной сети?
UDP
сокет на сервер, порт которого постоянно открыт. а затем я реализовал тот же код с некоторыми изменениями ссылки, которой вы поделились в моем приложении. Когда приложению требуется IP-адрес сервера, приложение открывает порт сокетаUDP
и отправляет широковещательный адрес черезUDP
. но здесь вы должны поддерживать один и тот же номер порта в приложении и на сервере. - person Mangesh Sambare   schedule 09.06.2016