Есть ли метод для процедурного обнаружения, если сетевой маршрутизатор поддерживает DHCP с использованием C / C ++? - PullRequest
0 голосов
/ 22 октября 2009

Существует сценарий, когда приложение сообщает устройству в сети, чтобы он получил свой IP-адрес от DHCP-сервера сетевого маршрутизатора. Если DHCP-сервер недоступен, поведение устройства становится нестабильным. Есть ли метод, чтобы процедурно определить, поддерживает ли сетевой маршрутизатор DHCP? Или это то, что устройство должно делать при попытке получить свой IP-адрес от DHCP-сервера?

Ответы [ 2 ]

5 голосов
/ 22 октября 2009

DHCP-клиент на устройстве делает именно это. Ну, почти что.

Сообщение DHCP DISCOVERY транслируется по ссылке. Затем, если есть какие-либо DHCP-серверы, желающие обслуживать этот конкретный MAC-адрес, каждый резервирует IP-адрес из своего пула и отвечает сообщением OFFER. Затем клиент выбирает, к какому серверу он хочет «привязаться», и выдает сообщение REQUEST. Сервер подтверждает предоставленную аренду IP-адреса сообщением ACK.
Клиент обнаруживает «недоступность» DHCP-серверов путем простого ожидания ожидания предложений.

Взгляните на проект DHCPing . Могу дать вам несколько идей.

Ссылки на RFC DHCP:

RFC 2131, протокол динамической конфигурации хоста
RFC 2132, параметры DHCP и расширения поставщика BOOTP

0 голосов
/ 23 октября 2009

Я был чем-то вроде этого Windows DHCP C API .

...