У меня есть модуль ESP8266 (в частности, Cactus Micro r2), который может подключаться к локальной сети, а затем общаться с моим локальным сервером по протоколу HTTP. Однако я должен предоставить SSID сети, пароль и IP-адрес моего сервера.Autodetect локальный сервер с ESP8266
Возможно, модуль ESP может отправлять HTTP-трансляцию всей сети с определенным заголовком? И тогда сервер, распознающий заголовок, будет отвечать, поэтому его IP-адрес будет обнаружен автоматически? Если не с HTTP, возможно ли это с UDP? И есть ли схема обмена для клиента и сервера, чтобы обнаружить друг друга?
Единственное решение (или, скорее, обходное), которое я изобрел до сих пор, состоит в том, чтобы перебирать весь диапазон адресов локальной подсети (обычно это 192.168.1.1-192.168.1.254) и пытаться инициировать обмен данными , Однако это очень медленно (если IP-адрес сервера находится в верхней половине диапазона). Кроме того, он не будет работать в сети 10.0.0.0 (не говоря уже о чистых сетях IPv6 ...).
Для разрешения имени -> IP-адреса требуется DNS-сервер. И, конечно же, сервер должен быть зарегистрирован в DNS. Вы могли бы, конечно, обмануть и сохранить запись «последнего известного адреса», а затем начать с этого адреса в следующий раз. Но DNS - это «правильное» решение. –
Это еще хуже: D Есть ли, по крайней мере, возможность получить все использованные IP-адреса? Что-то вроде команды arp -a в командной строке Windows? Это значительно сократило бы количество повторяющихся IP-адресов ... – Storm
'arp -a' просто отслеживает, какие IP/MAC-адреса разговаривали с вашим компьютером (или с вашей машиной поговорили). Если он не «знает» сервер, то он, вероятно, тоже не разговаривал с ним. –