【求助】如何实现tcp/ip协议的分包传输?

2019-07-20 23:49发布

本帖最后由 yzhh007 于 2016-1-5 14:33 编辑

我现在是将板子和传感器通过网线传输,板子单包数据量接受上限是1500字节左右,但由于现在程序精度要求,传感器发出的每包数据量会超过上限要求,我想把传感器发出的一包数据拆为两包接受,之后再由芯片处理为一包。不知道stm32f4xx这个系列的板子是否支持这样的传输方式呢?希望有高手可以指点一下!              
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
enan
2019-07-21 09:06
下面转载一个lwip分包发送

我用的stm32f103 +enc28j260+ lwip1.3.2 ,一开始参照例子写了一个web服务器也就是些点led灯的玩意,没什么意思,后来项目需要做个配置网页,由于有多个网页标签,导致网页数组很大,超过了1500,实际上等于1400就发送不出去了。因此我很纠结,如果网页数组限制在1400个字节以内,那么随便写个网页也会超出1400个字节,这样就限制了web服务器的使用。
      后来,我查找了很多帖子,都只有提问,回答的都不清楚,经过多次的测试发现了解决办法,也不用修改lwipopts.h文件,web数组可以分多次发送,即自己手动分包,将web数组分割成多个小于1400的数组,多次调用tcp_write(),就可以了,如下:
tcp_write(pcb,http_html_hdr,sizeof(http_html_hdr),1);      /* 发送http协议头部信息 */
tcp_write(pcb,login,1300,1);    //发送数据
tcp_write(pcb,login+1300,1300,1);    //发送数据
tcp_write(pcb,login+2600,sizeof(login)-2600,1);    //发送数据

另外, lwip我没用过,我用的是W5500,手动分段后疯狂的往网卡写就行了

一周热门 更多>