lwip netbuf
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相关推荐
- LwIP之netbuf
netbuf是应用程序和协议栈内核交互的一种数据结构 netbuf并不复杂,下面是实现代码 /* 创建netbuf */ struct netbuf *netbuf_new(void) {struct ...
- 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 ...
- lwip可以用于发udp_LWIPUDP一对多
最近在STM32F767的开发板上移植了LWIP UDP的代码,开发板的资料里面有介绍LWIP移植的文档,介绍了几种网络通信方式,如TCP server,TCP client,UDP,按照文档里面的介 ...
- LwIP 之一 源码目录文件详解及移植说明
lwIP 是 TCP/IP 协议套件的一个小型独立实现.lwIP TCP/IP 实现的重点是减少 RAM 使用同时仍然有一个完整的 TCP. 这使得 lwIP 适合使用在具有数 10 千字节的可 ...
- STM32F7xx —— LAN8720(FreeRTOS+LWIP)
STM32F7xx -- LAN8720 STM32F767自带以太网模块,需要外接PHY芯片,完成以太网通信(MII/RMII接口).LAN8720详细资料看手册.LWIP:1.4.1 FreeRT ...
- LwIP应用开发笔记之十一:LwIP带操作系统UDP服务器
我们已经实现了在FreeRTOS系统上的LwIP的移植工作,但只是简单的在系统平台上跑了起来.我们还希望能做更多的事情,这一节我们就在FreeRTOS系统上实现基于LwIP的UDP服务器. 1.U ...
- LWIP源代码文件目录解析
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转 doc文件夹结构 contrib.txt FILES rawapi.txt 告诉读者怎样使用协议栈的Raw/Callback API进行编程 ...
- 第二节 LwIP简介
本专栏使用的是LwIP 2.1.2版本 ,官方下载链接:http://savannah.nongnu.org/projects/lwip/. LwIP 的优缺点 本专栏以LwIP 2. 1.2 为主要 ...
- LWIP netconn TCP UDP测试 实例
本文由自己从网络上查资料整理而成 已经测试可用 只需修改下就能用到项目中 给需要的童鞋们参考 平台(LM3S9B92+UCOSII+LWIP) 在线IP地址转换器(二进制 十进制 十六进制转换) ht ...
最新文章
- 折线图表动画(历史进程效果)
- 麻省理工正式宣布人工智能独立设系!人工智能与电子工程、计算机科学系将三分天下...
- 3.在slave1机器下载3个安装包解压后,复制给master机器
- windows安装spark工具记录
- struts2配置中Action的name 和package的name和namespace作用
- 很气很气——在python中切换selenium中的窗口
- Python之XML解析详解
- 机械硬盘4k读写速度_三星T5移动硬盘应用评测:不止够用,还很好用
- matlab求半径范围内的点,matlab怎么快速搜索距离某点球形范围内的所有点
- sqlserver2005使用convert转换成各种格式的日期
- 用mysql web建立论坛_在web1上搭建Discuz论坛
- mysql基础之mariadb的安装,连接,用户,密码,权限设置语句详解
- 使用UITextField去自定义searchBar 【iOS】
- VMware网络连接模式——桥接模式、NAT模式以及仅主机模式的介绍和区别
- 【mysql】使数据表ID连续的两个方法
- pycharm英文版转成中文版
- 微信与企业微信消息如何互通?
- 精灵的移动效果,旋转效果
- 相伴十六载,讲讲我和数据仓库的故事(一)
- 记一次内网SSH后门误报事件
热门文章
- Vim Vundle YouCompleteMe
- Java二叉排序树(转)
- 解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效
- 性能测试诊断分析与优化培训资料打包下载
- 递归(二)-------经典递归实例(汉诺塔问题)
- [转载]共享软件的注册加密法
- 聚焦BCS|新华网:2020年北京网络安全大会开幕
- 从城市到矿山!成都睿铂与Microdrones 海外三维建模案例
- Silverlight Blend动画设计系列三:缩放动画(ScaleTransform)
- Apache2.4项目配置PHP/TP项目方法