轻量化嵌入式协议栈LwIP三种编程风格-综合4

383 阅读2分钟

1 netconn相关函数

  • 在 LwIP 中,如 TCP 连接,UDP 通信,都是需要提供一个编程接口给用户使用的,那么为了描述这样子的一个接口,LwIP 抽象出来一个 nettonn 结构体,它能描述一个连接,供应用程序使用,同时内核的 NETCONN API接口也对各种连接操作函数进行了统一的封装,这样子,用户程序可以很方便使 netconn和编程函数,我们暂且将 netconn称之为连接结构体。
  • 一个连接结构体中包含的成员变量很多,如描述连接的类型,连接的状态(主要是在 TCP 连接中使用),对应的控制块(如 UDP 控制块、TCP 控制块等等),还有对应线程的 消息邮箱以及一些记录的信息
  • image.png

2 Socket相关函数

  • Socket虽然是能在多平台移植,但是 LwIP 中的 Socket并不完善,因为 LwIP 设计之初就是为了在嵌入式平台中使用,它只实现了完整 Socket的部分功能,不过,在嵌入式平台中,这些功能早已足够。
  • 在 Socket中,它使用一个套接字来记录网络的一个连接,套接字是一个整数,就像我们操作文件一样,利用一个文件描述符,可以对它打开、读、写、关闭等操作,类似的,在网络中,我们也可以对 Socket套接字进行这样子的操作,比如开启一个网络的连接、读取连接主机发送来的数据、向连接的主机发送数据、终止连接等操作。 image.png

3 RAW相关函数

  • RAW API是基于回调函数实现的 API接口,它是很底层的 API接口,这需要开发者对LwIP 有较深的了解才能很好使用它,RAW API的核心就是对控制块的处理,因为对于报文数据的处理、注册回调函数等都是需要开发者自己去实现,都是比较麻烦的,但是有一个优点,那就是处理数据效率高。 image.png