这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » tcp的网络数据收发的问题

共10条 1/1 1 跳转至

tcp的网络数据收发的问题

高工
2013-04-22 10:04:44     打赏

程序运行环境linux


在一个tcp链接中,服务器端要个客户端发送数据。


假设,第一次收到的数据包大小为1448,第一个数据包包含总数据的大小(一张图片的大小640*480的数据量),假如获得的数据大小总共为18284

第二次,第三次等获得的数据包大小

recv_num = 1448

recv_num = 1448

recv_num = 2000

recv_num = 2000

recv_num = 344

recv_num = 1448

recv_num = 1448

recv_num = 1448

recv_num = 1448

recv_num = 1448

recv_num = 2000

recv_num = 392


这是我在应用程序read(sock_fd, re_buf,  2000)获得的数据包。


就是在应用程序读取最后一个数据包时,他却把下一帧的数据包跟这392个字节一块读出来了,导致上一张图片数据不完整。



可是我用wireshark在底层获得的数据包,每次都是1448,就是最后一帧为392,没发现底层出现数据重组的现象(即把最后一帧跟下一张图片的第一帧放一块发送给客户端的)。


可是在应用层,他却把上一张图片数据的最后一帧跟下一张图片的数据第一帧跟重组了,发给了应用层即read函数。


此现象是随机出现,而且不频繁出现。


这是为什么啊?  初次搞tcp,希望有人给些见解~~




关键词: 网络     数据     收发     问题    

高工
2013-04-26 16:03:31     打赏
2楼
请路过的技术专家帮忙给解答一下吧,谢谢!

专家
2022-12-26 18:00:01     打赏
3楼

感谢分享


专家
2023-01-29 07:34:58     打赏
4楼
学习了

专家
2023-01-29 07:40:24     打赏
5楼

看看


专家
2023-01-29 07:56:02     打赏
6楼

数据包里不保存包的组合信息吗?比如属于第几帧、数据大小等信息?



专家
2023-01-29 08:45:56     打赏
7楼

感谢楼主的分享,很实用了。


院士
2023-01-29 08:54:12     打赏
8楼

谢谢分享


专家
2023-01-29 10:06:46     打赏
9楼

感谢分享


专家
2023-01-29 10:09:54     打赏
10楼

谢谢楼主提供分享


共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]