【问题标题】:Is there a method to procedurally detecting if network router supports DHCP using C/C++?有没有一种方法可以通过程序检测网络路由器是否支持使用 C/C++ 的 DHCP?
【发布时间】:2009-10-22 16:54:41
【问题描述】:

有一种情况,应用程序告诉网络上的设备从网络路由器的 DHCP 服务器获取其 IP 地址。如果 DHCP 服务器不可用,则设备的行为会变得不稳定。有没有一种方法可以在程序上检测网络路由器是否支持 DHCP?或者,这是设备在尝试从 DHCP 服务器获取其 IP 地址时需要执行的操作吗?

【问题讨论】:

    标签: c++ c network-programming dhcp


    【解决方案1】:

    设备上的 DHCP 客户端正是这样做的。好吧,差不多了。

    DHCP DISCOVERY 消息在链路上广播。然后,如果有任何 DHCP 服务器愿意为这个特定的 MAC 地址提供服务,则每个服务器都会从其池中保留一个 IP 地址,并以 OFFER 消息进行响应。客户端然后选择它想要“绑定”到的服务器并发出请求消息。服务器使用 ACK 消息确认 IP 地址的授予租约。
    客户端通过简单地超时等待提供来发现 DHCP 服务器的“不可用”。

    看看DHCPing 项目。可能会给你一些想法。

    DHCP RFC 的链接:

    RFC 2131, Dynamic Host Configuration Protocol
    RFC 2132, DHCP Options and BOOTP Vendor Extensions

    【讨论】:

      【解决方案2】:

      我类似于this Windows DHCP C API

      【讨论】:

      • 这看起来像是在他们的动态 DNS 实现中的一堆钩子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      相关资源
      最近更新 更多