- 主题:socket通信,实时性太差的问题
显然不是电脑OS的问题,真有这么大bug,早就fix了
--
修改:z16166 FROM 123.115.128.*
FROM 123.115.128.*
大概率是qt的库没用对,贴你的代码让各位大拿看看
【 在 hengcuiyuan 的大作中提到: 】
: 用wireshark抓了一下包,发现通信的时间非常短,PLC的响应没有问题,但是数据包到了协议栈之后,有的时候触发qt的ReadyRead信号耗时很长,一般都有几十毫秒,偶尔出现几秒钟的情况,我每次通信的数据量很少,是不是数据量太少了,操作系统在等待更多的数据一起发送?有修改的方法吗?
:
--
FROM 114.245.195.*
8月份到12月初,还没搞定?
【 在 hengcuiyuan 的大作中提到: 】
: 我现在是多线程环境,通信程序在一个独立的线程里面,有点坑的是三菱的3E帧结构不含数据包的序列号的,所以我只能同步通信,我现在是只能一次通信完成之后再做下一次通信,信道被占用的时间里面就用QCoreApplication::processEvents去做事件处理。这种情况下,我发现:1、Debug模式下,数据包到了之后readyRead信号没有被触发,但release模式下,readyRead大部分情况被触发了;2、release模式下,偶尔出现数据包呆在协议栈里面几秒钟,readyRead不被触发,但是下一个数据包到来的时候,readyRead被立刻触发,导致粘包,无法处理;3、数据通信的时间很短,但是从协议栈到socket的时间要长的多。
: 可能是我的代码真写的有问题,我现在是需要读的时候读,需要写的时候写,每次数据传输的报文很小,再加上多线程环境,又没法搞异步通信,特别凌乱。我打算简单点,直接设定定时器来读和写,读完写,写完读,一次性把所有的数据读或者写完,也许可以解决这个问题。
:
--
FROM 114.245.195.*