ClientSocket用Timer发送数据的诡异丢包问题
我用ClientSocket写的一个客户端,发送用SendBuf接受用ReceiveBuf,我用两个Timer发送数据,OnRead事件接收数据,每发送一次都会收到服务端的反馈数据,
现在问题是:两个Timer同时发,时间间隔都是200,接收时丢包,如果用一个Timer,时间间隔无论多小都可以正常接收?
先说声谢谢,我找不到解决的思路了。
[解决办法]
发丢了不要紧,应是冲突所致。请检查SendBuf的返回值,看看实际发成功多少字节,如果没完全发成功,则将剩下的重发即可。
我一般要SendBuf一批数据,都是在一个while循环中发,直到发完为止。
[解决办法]
PLC如果收不过来的确不好办,这相当于你有一个网络,但非常差。老是发数据但老是不成功。
只有在PLC返回不正常时,降低发的速度,直到速度降为0.
[解决办法]
如果是PLC的话,我建议由PLC主动控制整个通讯过程
也就是先有PLC发送指令或者数据之后,PC才回复数据