Как да сканирате мрежата, за да намерите конкретна периферия

Създавам няколко малки електронни модула за домашна автоматизация, базирани на Arduino чипове, с Ethernet свързаност. Ще се опитам да ги накарам да получат IP адрес с DHCP, ако е възможно, но също така искам да създам C# приложение за конфигуриране на тези модули и бих искал софтуерът ми да сканира мрежата, за да открива автоматично модулите ми, т.к. драйвер за принтер на HP може да открива автоматично принтерите в мрежата например.

помислих си за:

  1. получаване на IP и маска на компютъра, за да се определи наборът IP
  2. след това многонишкови ping или HTTP заявки към всеки IP от набора
  3. проверете отговорите и получете mac адресите
  4. вижте дали mac адресът отговаря на моя набор
  5. направете конкретна http заявка, за да извлечете „модела“ на модула и да знаете как да взаимодействате с него

Правдоподобен ли е този алгоритъм или някой знае ли по-ефективен начин? Харесайте заявки за излъчване на адреса за излъчване и вижте какво ще получите обратно? Някакви мостри или идеи?


person Sierramike    schedule 03.02.2015    source източник


Отговори (2)


Напълно правдоподобно. Директният достъп на ниско ниво за изпращане на arp заявки и връщане на arp-таблицата е малко труден, но има няколко въпроса тук на сайта. Имайте предвид, че устройството не трябва да отговаря на ping, за да може да функционира в мрежата. Проверете документацията на чиповете, които използвате.

person Thomas Roes    schedule 03.02.2015

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

person DoronG    schedule 05.02.2015