lwip2.0.2

netbuf_new——分配netbuf结构体的内存。

netbuf_alloc,分配netbuf中pbuf内存(pbuf_alloc中PBUF_RAM类型,包括pbuf结构体和payload区),如果使用nefbuf_ref的话,则不需要此步

netbuf_ref,分配netbuf中pbuf内存(pbuf_alloc中PBUF_REF类型,包括pbuf结构体,无payload区)

netbuf_free,调用的是pbuf_free

netbuf_delete,删除nef_buf结构体

使用方法:

接收过程————

  定义netbuf指针,netbuf结构体协议栈会分配(没找到在哪儿分配的?见后面分析),包括pbuf和netbuf结构体

  接收函数会获取协议栈分配的netbuf指针——netconn_recv(conn, &buf);  

  获取数据和长度——netbuf_data(bufrx, (void *)&drcv, &dlen);  !!!netbuf有可能有好几个,可能需要遍历。

  释放netbuf结构体(同时释放netbuf结构体和pbuf内存)——netbuf_delete(bufrx);

发送过程————

  ——已有数据,datasend[100]

    定义netbuf指针(能否直接定义netbuf变量?)——struct netbuf *buf;

    申请netbuf结构体——buf = netbuf_new();

    引用待发送的数据——netbuf_ref(buf, datasend, 20);

    发送数据——netconn_sendto(conn, buf, &addrto, 2020);

接收过程的netbuf在哪儿分配的:

udp.c中的udp_input中最后会调用

pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src);

pcb的recv的是新建netconn时,pcb_new时挂接的,

挂接的是api_msg.c中的recv_udp函数,在这里完成mbox post

在该函数里分配netbuf,

会往netconn的接收邮箱中发送消息(对于netconn而言,只有接收邮箱,没有发送邮箱,发送是不需要邮箱的

sys_mbox_trypost(&conn->recvmbox, buf)

在以下函数中完成

api_lib.c中的netconn_recv,对于udp最后会调用netconn_recv_data

最后会调用sys_arch_mbox_fetch(&conn->recvmbox, &buf, conn->recv_timeout),接收邮箱

转载于:https://www.cnblogs.com/yanhc/p/8158257.html

lwip netbuf相关推荐

  1. LwIP之netbuf

    netbuf是应用程序和协议栈内核交互的一种数据结构 netbuf并不复杂,下面是实现代码 /* 创建netbuf */ struct netbuf *netbuf_new(void) {struct ...

  2. LwIP Application Developers Manual12---Configuring lwIP

    1.前言 2.LwIP makefiles With minimal features C_SOURCES = \ src/api/err.c \ src/core/init.c \ src/core ...

  3. lwip可以用于发udp_LWIPUDP一对多

    最近在STM32F767的开发板上移植了LWIP UDP的代码,开发板的资料里面有介绍LWIP移植的文档,介绍了几种网络通信方式,如TCP server,TCP client,UDP,按照文档里面的介 ...

  4. LwIP 之一 源码目录文件详解及移植说明

       lwIP 是 TCP/IP 协议套件的一个小型独立实现.lwIP TCP/IP 实现的重点是减少 RAM 使用同时仍然有一个完整的 TCP. 这使得 lwIP 适合使用在具有数 10 千字节的可 ...

  5. STM32F7xx —— LAN8720(FreeRTOS+LWIP)

    STM32F7xx -- LAN8720 STM32F767自带以太网模块,需要外接PHY芯片,完成以太网通信(MII/RMII接口).LAN8720详细资料看手册.LWIP:1.4.1 FreeRT ...

  6. LwIP应用开发笔记之十一:LwIP带操作系统UDP服务器

      我们已经实现了在FreeRTOS系统上的LwIP的移植工作,但只是简单的在系统平台上跑了起来.我们还希望能做更多的事情,这一节我们就在FreeRTOS系统上实现基于LwIP的UDP服务器. 1.U ...

  7. LWIP源代码文件目录解析

    欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转 doc文件夹结构 contrib.txt FILES rawapi.txt 告诉读者怎样使用协议栈的Raw/Callback API进行编程 ...

  8. 第二节 LwIP简介

    本专栏使用的是LwIP 2.1.2版本 ,官方下载链接:http://savannah.nongnu.org/projects/lwip/. LwIP 的优缺点 本专栏以LwIP 2. 1.2 为主要 ...

  9. LWIP netconn TCP UDP测试 实例

    本文由自己从网络上查资料整理而成 已经测试可用 只需修改下就能用到项目中 给需要的童鞋们参考 平台(LM3S9B92+UCOSII+LWIP) 在线IP地址转换器(二进制 十进制 十六进制转换) ht ...

最新文章

  1. 折线图表动画(历史进程效果)
  2. 麻省理工正式宣布人工智能独立设系!人工智能与电子工程、计算机科学系将三分天下...
  3. 3.在slave1机器下载3个安装包解压后,复制给master机器
  4. windows安装spark工具记录
  5. struts2配置中Action的name 和package的name和namespace作用
  6. 很气很气——在python中切换selenium中的窗口
  7. Python之XML解析详解
  8. 机械硬盘4k读写速度_三星T5移动硬盘应用评测:不止够用,还很好用
  9. matlab求半径范围内的点,matlab怎么快速搜索距离某点球形范围内的所有点
  10. sqlserver2005使用convert转换成各种格式的日期
  11. 用mysql web建立论坛_在web1上搭建Discuz论坛
  12. mysql基础之mariadb的安装,连接,用户,密码,权限设置语句详解
  13. 使用UITextField去自定义searchBar 【iOS】
  14. VMware网络连接模式——桥接模式、NAT模式以及仅主机模式的介绍和区别
  15. 【mysql】使数据表ID连续的两个方法
  16. pycharm英文版转成中文版
  17. 微信与企业微信消息如何互通?
  18. 精灵的移动效果,旋转效果
  19. 相伴十六载,讲讲我和数据仓库的故事(一)
  20. 记一次内网SSH后门误报事件

热门文章

  1. Vim Vundle YouCompleteMe
  2. Java二叉排序树(转)
  3. 解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效
  4. 性能测试诊断分析与优化培训资料打包下载
  5. 递归(二)-------经典递归实例(汉诺塔问题)
  6. [转载]共享软件的注册加密法
  7. 聚焦BCS|新华网:2020年北京网络安全大会开幕
  8. 从城市到矿山!成都睿铂与Microdrones 海外三维建模案例
  9. Silverlight Blend动画设计系列三:缩放动画(ScaleTransform)
  10. Apache2.4项目配置PHP/TP项目方法