【程序】在STM32单片机上实现基于LwIP 2.1.3协议栈raw API的DHCP服务器,为其他设备分配IPv4地址(20220122版)

本程序是参考了udhcp-0.9.8后编写的。
使用方法:

ip4_addr_t ip4addr, netmask, gw;
struct dhcpd_config dhcpd;
struct netif wifi_88w8801_uap;

IP4_ADDR(&ip4addr, 192, 168, 20, 1); // 板子IP地址
IP4_ADDR(&netmask, 255, 255, 255, 0); // 子网掩码
ip4_addr_set_zero(&gw); // 默认网关
netif_add(&wifi_88w8801_uap, &ip4addr, &netmask, &gw, NULL, ethernetif_init, netif_input);
netif_set_up(&wifi_88w8801_uap);

// 配置IP地址池和DNS服务器的地址
dhcpd_config_init(&dhcpd);
IP4_ADDR(&dhcpd.start, 192, 168, 20, 100);
IP4_ADDR(&dhcpd.end, 192, 168, 20, 200);
IP4_ADDR(&dhcpd.dns_servers[0], 8, 8, 8, 8);
IP4_ADDR(&dhcpd.dns_servers[1], 8, 8, 4, 4);
dhcpd_start(&wifi_88w8801_uap, &dhcpd);

此DHCP服务器支持静态MAC地址绑定,要添加或删除绑定请使用dhcpd_add_static_lease函数(参数ipaddr=NULL表示删除)。
使用dhcpd_print_leases函数可以显示当前DHCP客户端列表。

lwipopts.h中需要配置的选项:

#ifndef LWIP_LWIPO

你可能感兴趣的:(STM32,服务器,单片机,stm32,lwip,dhcp)