- 主题:请教socket编程如何保证响应的时效性
方便的话还是贴下代码吧,这么常用的类,感觉不应该会有如此严重的问题
【 在 hengcuiyuan 的大作中提到: 】
: 用qt的socket,不知道是qt函数库的问题呢,还是什么问题,通信的时效性无法保证。但听过侦听网络数据包发现从对方读取数据,对方的响应很快,基本在5ms以内就有答复,但是我的应用程序却无法保证在100ms内获取到对方的应答,有的时候可以,有的时候不行。此外,debug版本和re
: lease版本的表现也不一样,qt4和qt5编译出来的程序的表现也不一样。感觉进入了一个大坑!
--
FROM 111.199.187.*
那就是同步通信了,不是异步通信。
【 在 roy 的大作中提到: 】
: 这个很简单,没有readyRead的时候每隔50ms尝试读一次就好了
:
--
FROM 113.70.91.*
消费级的没问题,工业级的可靠性要求高的场合,问题很大。
【 在 gameplayer 的大作中提到: 】
: 方便的话还是贴下代码吧,这么常用的类,感觉不应该会有如此严重的问题
:
--
FROM 113.70.91.*
记得以前金鱼总的QtNg是GPL版权,刚打开看,发现版权改为LGPL 3.0了。
赞!
【 在 hgoldfish 的大作中提到: 】
: 哈哈。大魔王来看看我弄的那个 qtng.org 吧。
--
FROM 119.233.178.*
和同步异步有啥关系?在别的线程里用qtimer自动定时触发readReady对应的slot又不是什么难事
【 在 hengcuiyuan 的大作中提到: 】
: 那就是同步通信了,不是异步通信。
--
修改:roy FROM 114.253.38.*
FROM 114.253.38.*
不,你说的问题在消费应用中也算非常严重的了,比如下载文件之类的操作,有这样的
问题的话遇到的概率很高。所以还是怀疑是使用上的问题。
【 在 hengcuiyuan 的大作中提到: 】
: 消费级的没问题,工业级的可靠性要求高的场合,问题很大。
--
FROM 111.199.187.*
TCP 不保证通讯的高速
不过,100MS 太大了,感觉不大正常
【 在 hengcuiyuan 的大作中提到: 】
: 用qt的socket,不知道是qt函数库的问题呢,还是什么问题,通信的时效性无法保证。但听过侦听网络数据包发现从对方读取数据,对方的响应很快,基本在5ms以内就有答复,但是我的应用程序却无法保证在100ms内获取到对方的应答,有的时候可以,有的时候不行。此外,debug版本和release版本的表现也不一样,qt4和qt5编译出来的程序的表现也不一样。感觉进入了一个大坑!
--
FROM 52.9.227.*
其实随便用。。我再想想怎么加上静态链接的免除条款。做到随便静态链接也可以。当然,改动了 qtng 本身,还是希望能够开源出来大家一起用。不要像 bsd 协议那样被大厂商随便白嫖。
【 在 callmebbser 的大作中提到: 】
: 记得以前金鱼总的QtNg是GPL版权,刚打开看,发现版权改为LGPL 3.0了。
: 赞!
--
FROM 120.37.189.*
问题找到了,就是卡在readyRead的槽函数里面,当在槽函数里面执行的时候,有新数据到来,但这个新数据并不会再次有readyRead信号发出,后面的数据接收和处理程序就一直在傻等数据到齐,因而导致的通信超时。多线程的时候这种概率大,不搞多线程的时候没问题。
【 在 hongyan2022 的大作中提到: 】
: TCP 不保证通讯的高速
: 不过,100MS 太大了,感觉不大正常
:
--
FROM 113.70.90.*
Qt 的 socket 模型是单线程的话,,你用多线程通常就错了。
【 在 hengcuiyuan 的大作中提到: 】
: 问题找到了,就是卡在readyRead的槽函数里面,当在槽函数里面执行的时候,有新数据到来,但这个新数据并不会再次有readyRead信号发出,后面的数据接收和处理程序就一直在傻等数据到齐,因而导致的通信超时。多线程的时候这种概率大,不搞多线程的时候没问题。
--
FROM 110.81.146.*