Столкнулся с такой проблемой:
Программа запускается на различных компах, которые могут быть подключены к различным локальным сетям (или не подключены ни к одной)
На компах могут присутствовать несколько сетевых адаптеров (в том числе и WiFi-адаптеры), некоторые из которых могут быть отключены.
Требуется проверить наличие подключения к определённой локальной сети (по которой программа будет управлять различными устройствами, установив на нужном сетевом интерфейсе необходимые IP-адреса)
Нужную сеть можно однозначно идентифицировать только по наличию в ней PPPoE-сервера (известны имя сервера и его MAC-адрес)
Впрочем, вероятность встретить PPPoE-сервер в других подсетях (VLAN-ах) равна нулю, так что достаточно просто проверить наличие ответа от PPPoE-сервера.
В идеале, требуется создать некую функцию, возвращающую значение типа Boolean, в зависимости от того, обнаружен ли ответ от PPPoe-сервера.
Поиски подходящего кода успехами не увенчались...
Ещё лучше, если функция будет возвращать имя (или другой параметр) сетевого адаптера, через который удалось достучаться до PPPoE-сервера, либо пустую строку при отсутствии ответа.
Подобные программы встречал - например, PPPoE Monitor (http://l2nt.info/), - но они требуют установки дополнительных компонентов (например, библиотеки WinPcap)
Хотелось бы реализовать данный функционал без использования дополнительных компонентов.
Как включить отключенные сетевые адаптеры - попробую разобраться сам (где-то находил примеры кода), а вот как сформировать PADI-пакет Ethernet, и получить ответный PADO, представления не имею.
Или, может, есть какая-то API-функция, которая сама отправит запрос, и возвратит ответ?
Если у кого-то есть полезные ссылки по теме, или куски кода (желательно на VB, конечно), - буду очень рад.