您尚未登录。

楼主 #1 2017-10-23 16:11:06

didi
会员
注册时间: 2017-10-15
已发帖子: 2
积分: 2

大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络

大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络串口助手就没有这个情况,这是怎么回事呀?

哪位大神可以给小弟分析一下原因吗?

离线

#2 2018-04-09 11:40:12

尧哥
会员
注册时间: 2017-09-06
已发帖子: 7
积分: 7

Re: 大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络

有可能你程序缓存问题。查看是否程序缓存满了

离线

#3 2021-07-12 09:15:35

zjsx133
会员
注册时间: 2018-07-23
已发帖子: 101
积分: 36

Re: 大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络

tcp有粘包现象,正常的。 串口工具发包是固定长度了。

离线

#4 昨天 00:15:11

bf209
会员
注册时间: 2026-02-27
已发帖子: 8
积分: 3

Re: 大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络

这问题看起来像是你代码里处理粘包或者缓冲区读数据时出了问题。TCP是流式协议,不是按“包”发送的,你调用send发送100字节,对端recv可能一次收到20字节,下一次收到80字节。网络串口助手内部帮你处理了这种粘包和半包问题,所以它显示正常。而你自己写的代码没有处理,直接把收到的半个包当完整包用了,结果就是丢了一半。

离线

#5 昨天 09:04:30

小加速器
会员
注册时间: 2026-02-02
已发帖子: 1
积分: 1

Re: 大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络

先用wireshark监控下,看下 是发送的问题还是接受的问题。

离线

#6 昨天 10:32:24

狼狼
会员
注册时间: 2020-06-14
已发帖子: 105
积分: 144

Re: 大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络

流式传输哪来的粘包的概念,这个词看着就牙碜。
根本方案在于思路的转变,接收的时候循环调用recv直到接够数据。那怎么才能知道接够了数据呢,就是设计一个协议将流式数据封装成帧。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


太原小智科技有限责任公司 - 东莞哇酷科技有限公司联合开发