怎么样用TCP/IP协议栈从单片机向电脑发送的消息产生粘包

2020-02-06 10:34发布

问题:从电脑(甲)上发送数据包到电脑(乙),数据包可以被完全的接收到。但是从单片机上发送的数据包不能被全部接受,有部分数据包丢失。如何修改单片机运行的TCP/IP协议站,使得从单片机上发送的数据包能被电脑全部接受,不会出现丢包?
图例:1.两台电脑之间的数据传输测试情况:
       用甲乙两台电脑进行数据传输测试,电脑甲(作为TCP client:IP=192.168.1.22)以20毫秒的时间间隔向电脑乙(作为TCP server:IP=192.168.1.21)发送长度为30字节的数据包,记录了甲的发包数和乙的收包数,如下图所示:电脑甲发送了5970个字节(图a);电脑(乙)接受到5970个字节(图b),没有出现丢包现象。
同时用Wireshark TCP/IP抓包工具进行抓包(如图c),可以看出甲虽然发送的每一个包的长度是30字节,但是抓包工具抓到包的长度可能会是140,130,120或者150,也就说发生了粘包的现象。 888.jpg (683.14 KB, 下载次数: 0) 下载附件 图f 2014-6-20 09:54 上传

对比这两组测试说明:电脑与电脑之间高速传输TCP数据,会产生粘包现象但不会丢包;而单片机向电脑高速传输TCP数据不会产生粘包但会产生丢包。
请问:能否通过修改单片机运行的TCP/IP协议栈使单片机向电脑传输的数据达到电脑向电脑传输数据的效果,可以产生粘包但不会丢包?
0条回答

一周热门 更多>