STM32之LWIP网络协议栈TCP服务器创建

      最后更新:2022-03-01 01:33:08 手机定位技术交流文章

      STM32之LWIP网络协议栈TCP服务器创建

      1.LWIP介绍

      lwip是瑞典计算机科学院网络嵌入式系统小组(SICS)的Adam Dunkels(亚当·邓克尔) 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持 TCP 协议主要功能的基础上减少对RAM的占用。
      LwIP是Light Weight(轻型)IP 协议,有无操作系统的支持都可以运行。LwIP 实现的重点是在保持TCP协议 主要功能的基础上减少对RAM的占用,它只需十几KB的RAM和 40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。

      STM32移植LWIP协议栈示例:https://blog.csdn.net/weixin_44453694/article/details/123119624

      2.TCP服务器搭建

      硬件平台:STM32F103ZE开发板、DM9000有线网卡
      开发环境:KEIL5

      3.主函数

      运行效果:
      在这里插入图片描述

      4.相关函数介绍

      1.建立TCP连接函数tcp_new

      struct tcp_pcb *tcp_new(void)
      函数功能:建立一个新的连接标志(pcb)
      形 参:无
      返回值: pcb 正常建立了连接标志,返回建立的 pcb
      NULL 新的 pcb 内存不可用时

      2.绑定IP和端口号tcp_bind

      err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
      函数功能:绑定本地 IP 地址和端口号
      形 参: pcb 准备绑定的连接,类似于 BSD 标准中的 Sockets
      Ipaddr 绑定的 IP 地址。如果为 IP_ADDR_ANY,则将连接绑定到所有的本地 IP 地址上
      port 绑定的本地端口号。注意:千万不要和其它的应用程序产生冲突
      返回值: ERR_OK 正确地绑定了指定的连接
      ERR_USE 指定的端口号已经绑定了一个连接,产生了冲突

      3.使指定连接进入监听状态tcp_listen

      struct tcp_pcb *tcp_listen (struct tcp_pcb *pcb)
      函数功能:使指定的连接开始进入监听状态
      形 参: pcb 指定将要进入监听状态的连接
      返回值: pcb 返回一个新的连接标志 pcb,它作为一个参数传递给将要被分派的函数。这样做的原因是
      处于监听状态的连接一般只需要较小的内存,于是函数 tcp_listen()就会收回原始连接的内存,
      而重新分配一个较小内存块供处于监听状态的连接使用。
      NULL 监听状态的连接的内存块不可用时,返回 NULL。如果这样的话,作为参数传递给函
      数tcp_listen()的 pcb 所占用的内存将不能够被分配。

      4.等待客户端连接tcp_accept

      void tcp_accept(struct tcp_pcbpcb,err_t (accept)(void *arg,struct tcp_pcb *newpcb,err_t err))
      函数功能:指定处于监听状态的连接接通后将要调用的回调函数
      形 参: pcb 指定一个处于监听状态的连接
      accept 指定连接接通后将要调用的回调函数
      返回值:无

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/19227.html

          热门文章

          文章分类