Qt网络延时测试(QTcpSocket,QUdpSocket)

12 篇文章 1 订阅

首先说明,测试不一定严谨,只是为了记录测试过程
为了能有对比性,这里采用了asio1.18.1作为服务端,分别使用qtcpsocket和asio进行测试
测试在本机测试 127.0.0.1

一.测试tcp
  • 创建asio tcp服务器端,接到数据后立刻返回到发送端
  • 创建asio tcp客户端,发送数据,打印接收数据和发送数据间的时间差(微秒级)
  • 创建qtcpsocket 客户端,使用信号槽方式接收数据,发送数据,打印接收数据与发送数据间的时间差(微秒级)
  • 结果如下
    asio tcp client:
    asio tcp client
    qtcpsocket client:
    qtcpsocket client
  • 结论:qtcpsocket 接收时间比asio长, asio平均在200us左右,qt平均1.5ms…
二.测试udp
  • 创建asio udp服务器端,接到数据后立刻返回到发送端
  • 创建asio udp客户端,发送数据,打印接收数据和发送数据间的时间差(微秒级)
  • 创建qudpsocket 客户端,使用信号槽方式接收数据,发送数据,打印接收数据与发送数据间的时间差(微秒级)
  • 创建qudpsocket 客户端,使用loop 方式接收数据,发送数据,打印接收数据与发送数据间的时间差(微秒级)
  • 测试结果:
    asio udp client:
    asio udp client
    qudpsocket 信号槽 client:
    在这里插入图片描述

qudpsocket loop client:
在这里插入图片描述

  • 结论: 使用asio udp 时间大概150us左右,qudp信号槽1500us左右,qudp loop 100us左右,
总结

qt在使用信号槽上会占用大量时间,大概会占用到1400us左右…所以,如果要开发低延时应用,建议使用asio或者qudpsocket/qtcpsocket loop的方式…不要使用信号槽.
我主要是为了测试实时性,并没有测试大数据性能问题,但对于客户端来说,应该没有太大问题
网上都说Qt的网络性能很差,应该是说的Qt服务端,这个我测试过使用qtcp 客户端和qtcp服务端,延时大概在2-3ms
这里就不贴代码了,放github上了测试代码:https://github.com/tianxiaofan/QtNetworkTest
另外如果看丢包率可参考:https://blog.csdn.net/goldenhawking/article/details/105622237

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的应用程序开发框架,可以用来实现各种应用程序的开发,包括图像处理和视频传输等。Qt提供了简单易用的API,使得开发者可以轻松编写网络传输代码。 图片及视频TCP/UDP网络传输使用QtQtNetwork模块来实现。通过创建QTcpServer或QUdpSocket对象来监听传入的连接或数据报,使用QTcpSocket或QUdpSocket对象来建立连接或发送数据。可以使用Qt的QImage和QPixmap类来处理图像,使用QVideoFrame和QVideoSurface类来处理视频。在使用网络传输时,需要将图像和视频转换成字节流,然后在网络中传输。 为了保证网络传输的可靠性,TCP协议应该被选择。TCP协议提供了重传机制和流量控制,因此可以保证传输的准确性和稳定性。在需要实时传输的情况下,UDP协议应该被选择。UDP协议不提供重传机制和流量控制,但是传输速度更快,因此可以保证传输时延较低。 在Qt中,可以使用QDataStream类来将数据流转换成字节流,然后发送到网络中。接收方可以使用QDataStream类来接收网络中的字节流,并将其转换回原始数据流。接收方可以使用QImage、QPixmap、QVideoFrame或QVideoSurface类来处理接收到的图像和视频。 总之,Qt是一个功能强大的跨平台框架,可以用来实现图片和视频的TCP/UDP网络传输。Qt提供了易用的API和丰富的类库,使得开发者可以轻松实现网络传输的代码。在实际应用中,需要根据传输的要求和需求选择合适的TCPUDP协议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值