uwyciw100 发表于 2017-2-21 09:30:28

LWIP缓存操作的问题

要用UDP发送3个字节,代码如下,但接收端却收到了50多个字节,请问在缓存操作部分是否有什么问题?谢谢pcb = (struct udp_pcb *)udp_new();
udp_connect(pcb, &des_ipaddr, des_port);
pbuf_alloc(PBUF_TRANSPORT, 3, PBUF_RAM);
pbuf_take(pbuf, (const void *)sample_data, 3);
udp_send(pcb, pbuf);

队长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没有初始化!
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没有初始化!

复制不全,:lol,正常初始化了,不好意思

uwyciw100 发表于 2017-2-21 14:54:55

队长shiwo 发表于 2017-2-21 12:57
,能收到你的数据,就是多收了其他的是吧,那你能解析多收的字节的信息是什么吗 ...

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




<div class="blockcode"><blockquote>


页: [1]
查看完整版本: LWIP缓存操作的问题