Я делаю простой школьный проект: малиновый PI с камерой, которая должна подключаться к приложению Android для просмотра видеозаписей безопасности.
На Rasberry Pi работает сервер, к которому приложение Androidподключается (по локальной сети).Однако он должен быть прост в использовании и настройке, поэтому для первого запуска приложение должно «обнаружить» Raspberry Pi и подключиться к нему.Вот как я это делаю сейчас:
Сначала я нахожу IP-адрес, используемый устройством, на котором работает приложение, следующим образом:
Formatter.formatIpAddress(((WifiManager) getSystemService(WIFI_SERVICE)).getConnectionInfo().getIpAddress());
Возвращает IP-адрес.Давайте пока воспользуемся 192.168.1.50
.
Затем я удалил последнюю часть через некоторое регулярное выражение, поэтому я остаюсь с 192.168.1.
.Затем я делаю фиксированный пул потоков из 253 потоков и просто пытаюсь подключиться к сокету на каждом IP-адресе в диапазоне от 192.168.1.2
- 192.168.1.254
.
. Это прекрасно работает в небольшой сети, где нетодновременно можно подключить более 250 устройств, но что если это большая сеть, к которой подключено больше устройств, а IP-адрес может варьироваться от 192.168.1.2
до 192.168.255.255
или даже 10.0.0.0
- 10.255.255.255
?Количество возможных IP-адресов становится экспоненциально выше, и я не думаю, что создание здесь 16 581 375 потоков - это ответ.
Итак, мой вопрос, есть ли лучший способ сделать это, и если да, то чтоэто так?