lwIP源码解析---httpd(一)

本文详细介绍了lwIP 2.1.2版本中httpd的初始化流程,包括网卡netif初始化,httpd的初始化入口,以及如何创建和管理tcp_pcb。 lwIP通过netif结构体作为硬件驱动与协议栈的桥梁,利用RAW API接口建立TCP端口,并采用回调函数方式处理客户端连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lwIP源码解析—httpd(一)

目录
一、lwIP版本
二、网卡netif初始化
三、httpd初始化流程
  3.1 初始化入口
四、处理客户端连接

学习参考:[野火]《LwIP应用开发实战指南》、lwIP官方说明手册:http://www.nongnu.org/lwip/2_1_x/index.html
一、lwIP版本
  此处使用lwip 2.1.2版本以及contrib 2.1.0版本(其中contrib源代码example中httpd展示了如何完整移植http的框架,需要移植一并使用才能构成完整的http应用)。
二、网卡netif初始化
  lwIP使用netif作为抽象出的网卡结构体,用于联系底层硬件驱动和lwIP软件的桥梁,是一个重要的结构,定义在lwip-2.1.2\lwip-2.1.2\src\core\netif.c。
  该网卡结构体中有IP地址,掩码,网关,MAC地址等网卡具备的信息,以及初始化,输入输出等回调函数。
  初始化接口:

struct netif *
netif_add(struct netif *netif,
#if LWIP_IPV4
          const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw,
#endif /* LWIP_IPV4 */
          void *state, netif_init_fn init, netif_input_fn input)

  调用此函数之后,便用lwIP协议栈创建出了一个网卡。其中按照contrib开发框架,init默认注册ethernetif_init, input默认注册ethernetif_input。作为网卡层的函数。这两个以太网层的接口,需要移植者根据不同网卡的方式进行实现。output函数则默认使用下列三个函数:

#if LWIP_IPV4
  netif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同人与野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值