По разным причинам у меня дома есть 3 широкополосных маршрутизатора WiFi (или, скажем, моя личная лаборатория по хобби). На стороне WAN один - FTTH, другой - ADSL, а третий - 4G-LTE. На стороне WLAN им назначены подсети 192.1.xx, 192.2.xx, 192.3.xx, и все они настроены на назначение IP-адреса DHCP запрашивающим устройствам в диапазоне 192.x.1.0 - 192.x.200.0, и выше 192.x.200.0 диапазон зарезервирован для статического IP-адреса.
У домашнего хозяйства (как и многие в наши дни) есть полдюжины телефонов / планшетов на базе Android и несколько компьютеров. Все устройства используют DHCP для назначения IP-адресов. Однако, как можно предположить, устройство может быть подключено к любому из 3-х WiFi-роутеров, и в результате может иметь любой IP-адрес (в диапазоне 192.x.1 ~ 192.x.200, где x = 1, 2, 3).
Я пытаюсь разработать приложение для Android, которое должно использовать TCP/IP для связи с конкретным сервером. Сервер представляет собой приложение Linux, работающее внутри виртуальной машины (32-разрядный гостевой Ubuntu, работающий на гипервизоре VMWare Workstation Pro 14) на ноутбуке с Windows 10. Ноутбуку также назначается IP-адрес динамически (DHCP). Виртуальная машина Linux использует виртуальный сетевой адаптер в режиме NAT.
Вот схема, чтобы объяснить настройку:
Проблема в том, что из-за использования динамического IP-адреса и использования явного IP-адреса (частный класс, таким образом, не управляемый через DNS), мне приходится часто перенастраивать IP-адрес сервера в клиентском приложении Android. Простым решением было бы перейти на использование статического IP-адреса для серверов - однако мне интересно, есть ли альтернативный подход, который является простым и элегантным?