@a63826ndrew
Студент, новичок в Python

Как опросить сетевые устройства с помощью ARP-запроса?

Здравствуйте!
Ситуация такая - есть у меня стенд с множеством различных контроллеров, модулей, и моя задача - написать программу на C#, которая будет брать со всех железок информацию для составления оценки безопасности. И вот есть моменты, которые хотелось бы уточнить:
1. Опрос стенда. Мой ноутбук соединяется с коммутатором стенда через порт Ethernet, и первая задача после установки физического подключения - опросить все устройства. Нужно это сделать для того, чтобы было видно наглядно, с какими устройствами можно работать. Порывшись и поискав информацию я сделал вывод, что самым лучшим вариантом будет ARP-запрос, вот только примеров реализации его нет, если я правильно понял то там должен генерироваться пакет специальным образом и наверное в таком случае должна быть какая-то библиотека на C#. Будет ли ARP-запрос в моём случае правильным решением данной задачи? Если да, то могу ли я попросить образец этого запроса или хотя бы где его можно посмотреть?
2. Чтение регистров. У меня есть пример кода, который на стенде сработал и я получил некоторые данные с него:
private void timerpoll_Tick(object sender, EventArgs e)
        {
            if (modClient.Connected == true)
            {
                //читаем 1ый узел
                modClient.UnitIdentifier = 1;
                int[] vals = modClient.ReadHoldingRegisters(0, 3);
                tReg1_1.Text = vals[0].ToString();
                tReg1_2.Text = vals[1].ToString();
                tReg1_3.Text = vals[2].ToString();
                //читаем 2ой узел
                modClient.UnitIdentifier = 2;
                vals = modClient.ReadHoldingRegisters(1, 3);
                tReg2_1.Text = vals[0].ToString();
                tReg2_2.Text = vals[1].ToString();
                tReg2_3.Text = vals[2].ToString();
            }
        }

Но сейчас этот код нуждается в модификации, и меня интересует вот такой момент: в картах регистров Modbus адреса с некоторыми значениями, которые там хранятся, пишутся в 16-ричной системе счисления, а вот как тогда изменить его, чтобы он считывал конкретный диапазон?
Заранее спасибо.
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 1
На винде можно использовать функцию SendArp:
https://learn.microsoft.com/en-us/windows/win32/ap...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы