我想编写一个程序,该程序从具有MAC地址的接口(interface)发送DHCP请求,并从DHCP服务器获取IP地址,网关,掩码和广播地址。
我使用了DHCP客户端的this implementation,但它仅提供IP地址和网关地址。
我读到有关DHCP消息格式的信息,但没有找到掩码或广播文件。但是,当使用dhcpclient命令行时,使用ifconfig可以看到该接口(interface)具有掩码和广播地址,如下所示:
arm@arm-desktop:~/dhclient wlp2s0
arm@arm-desktop:~/ifconfig wlp2s0
wlp2s0 Link encap:Ethernet HWaddr 54:da:d0:15:4b:04
inet addr:153.179.154.55 Bcast:153.179.169.255 Mask:255.255.240.0
inet6 addr: fe80::2037:c031:5db1:445c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:113 errors:0 dropped:0 overruns:0 frame:0
TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112130 (112.1 KB) TX bytes:9520 (9.5 KB)
有人可以告诉我如何获取这些信息吗?
最佳答案
查看this question,可能是您想要的。
我认为您正在编写自己的DHCP客户端,该客户端使用原始套接字或其他将字节直接放在线路上的方式。
您可以在Google上阅读有关DHCP here或其他地方的更多信息。如您所见,可以从DHCP服务器以及广播地址获取子网掩码。与DHCP服务器通信时,这是通过DHCP选项完成的。
然后,您必须按正确的顺序将正确的字节放在电线上,并读取后面的字节以获取所需的信息。
使用链接的客户端,您可以扩展代码以从DHCP服务器请求和处理更多信息,例如广播地址和子网掩码。有关如何在DHCP选项字段中询问信息的信息,请参见DHCP文档。
关于c++ - 使用DHCP获取IP地址,网关,掩码和广播信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46173222/