大神们,我这遇到这样一个情况,用TCP/IP进行网络传输,然后到了我这边接受数据的时候,有的数据只有一半,然后另一半不知道哪去了,但是用网络串口助手就没有这个情况,这是怎么回事呀?
哪位大神可以给小弟分析一下原因吗?
离线
有可能你程序缓存问题。查看是否程序缓存满了
离线
tcp有粘包现象,正常的。 串口工具发包是固定长度了。
离线
这问题看起来像是你代码里处理粘包或者缓冲区读数据时出了问题。TCP是流式协议,不是按“包”发送的,你调用send发送100字节,对端recv可能一次收到20字节,下一次收到80字节。网络串口助手内部帮你处理了这种粘包和半包问题,所以它显示正常。而你自己写的代码没有处理,直接把收到的半个包当完整包用了,结果就是丢了一半。
离线
先用wireshark监控下,看下 是发送的问题还是接受的问题。
离线
流式传输哪来的粘包的概念,这个词看着就牙碜。
根本方案在于思路的转变,接收的时候循环调用recv直到接够数据。那怎么才能知道接够了数据呢,就是设计一个协议将流式数据封装成帧。
离线