tcp

TCP数据包多包重合的问题

发布于 2020-10-10 09:11:01    浏览:351

本人使用的平台为stn32F439,rtthread版本为4.0.3,使用
定义rt_uint8_t net_status_tx_data[33];
使用rt_tcpclient_send(tcp_handle, net_status_tx_data, 33)函数以20毫秒一次的频率向服务端发送33包的数据,数据包里包含时间信息,在服务器端用wireshark软件及netassist软件查看数据状态,根据时间信息判断,没有出现丢帧的现象,但传送的字节数为66字节,而且是40毫秒发送1帧数据,即2包数据合成1包数据进行发送,请教各位老师是哪个环节出现了错误。

查看更多

1 个回答
aozima
aozima 2020-10-10
拒绝白嫖,拒绝键盘侠!

这是正常现象,TCP是流式的。
你可以通过 TCP_NODELAY 来控制发送端尽量不要延时粘包。
但是当网络不畅时,前面的数据包会有阻塞,依然会自动粘包。
而且中间的路由器或是代理,也可能会帮你自动粘包。
接收端没有及时收走,或一下收到多个包,也可能会自动粘包。

如果你是定长的包,可以通过长度来分。
如果不定长,自己添加协议来解析。

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
351

发布
问题

分享
好友

手机
浏览

扫码手机浏览