你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

LWIP缓存操作的问题

[复制链接]
uwyciw100 提问时间:2017-2-21 09:30 /
要用UDP发送3个字节,代码如下,但接收端却收到了50多个字节,请问在缓存操作部分是否有什么问题?谢谢
  1. pcb = (struct udp_pcb *)udp_new();
  2. udp_connect(pcb, &des_ipaddr, des_port);
  3. pbuf_alloc(PBUF_TRANSPORT, 3, PBUF_RAM);
  4. pbuf_take(pbuf, (const void *)sample_data, 3);
  5. udp_send(pcb, pbuf);
复制代码


收藏 1 评论6 发布时间:2017-2-21 09:30

举报

6个回答
队长shiwo 回答时间:2017-2-21 09:40:30
UDP有协议头那些东西的,应该也会收的到的,看你入不入栈
uwyciw100 回答时间:2017-2-21 11:05:15
队长shiwo 发表于 2017-2-21 09:40
UDP有协议头那些东西的,应该也会收的到的,看你入不入栈

PC端是正确解析了UDP包的,遇到的问题是,收到的包,数据区不对,本意是传3个字节,结果收到59个字节,目的字节在数据区的最后。
zoomdy 回答时间:2017-2-21 12:40:13
如果这段代码是你实际使用的代码,那么pbuf没有初始化!
  1. pbuf = pbuf_alloc(PBUF_TRANSPORT, 3, PBUF_RAM); // 这才是正确的姿势
复制代码
队长shiwo 回答时间:2017-2-21 12:57:44
uwyciw100 发表于 2017-2-21 11:05
PC端是正确解析了UDP包的,遇到的问题是,收到的包,数据区不对,本意是传3个字节,结果收到59个字节,目 ...

,能收到你的数据,就是多收了其他的是吧,那你能解析多收的字节的信息是什么吗
uwyciw100 回答时间:2017-2-21 14:48:20
zoomdy 发表于 2017-2-21 12:40
如果这段代码是你实际使用的代码,那么pbuf没有初始化!

复制不全,,正常初始化了,不好意思
uwyciw100 回答时间:2017-2-21 14:54:55
队长shiwo 发表于 2017-2-21 12:57
,能收到你的数据,就是多收了其他的是吧,那你能解析多收的字节的信息是什么吗 ...

多收到的数据没看出来有什么特别的信息。我又修改了一下代码。除了前面的初始化代码,以下代码会被反复执行。
  1. pbuf=pbuf_alloc(PBUF_TRANSPORT, 3, PBUF_RAM);
  2. pbuf_take(pbuf, (const void *)sample_data, 3);
  3. udp_send(pcb, pbuf);
  4. pbuf_free(pbuf);
复制代码
但发现,如果我设置sample_data数组为3个字节大小,就会有多余数据出现,设置成20(随便设置,最小是多少还在测试)时,就没有多余数据。




  1. <div class="blockcode"><blockquote>
复制代码


所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版