TCP,传图片分包传送,第一次发送一个结构体,结构体包含本张图片的大小和其他的所需信息,为什么接收组包后只能收到第一张图片
1.经调试发现,如果断点运行是可以接收到几张图片的,到某个时候解析包头(结构体)的时候,发现是乱码,我解析都是按照接收的顺序,不放过每一个字节处理的,为什么会出现这种情况呢?
发包过程如下:
对于一张图片,首先发送一个结构体,包含了本张图片大小等信息,然后分多次发送图片数据,每次发1400字节
组包过程如下:
算法1:每次recv1400个字节,然后对于第一次接收的数据,取前20(sizeof(struct) = 20)字节作为结构体,然后后面的字节保存到缓存,因为此时知道图片大小,存够的话就把下面20个字节取出来作为结构体,但这样可以接收前面几张图片,到了后面就会失败,失败原因是解析到的结构体那20个自己是乱码(一些很大的数)
算法2:先取20字节,得到图片大小,然后recv图片大小,重复执行
上面的方法都可以正常接收几张图,但是都会发生解析到的结构体是乱码
发送放是一个死循环,不停的发送图片,当把发送改成只发2张图片,发现是可以收到的,但收到2张后又收到一串乱码- -