当前位置: 首页 > news >正文

QTcpSocket多线程连接慢问题

20250325记录

环境:Qt5.14.2 64位 msvc编译

在多线程环境下,使用QTcpSocket实现客户端,发现在少部分电脑上,连接时间过长,定时器检查套接字状态时,发现连接处于QAbstractSocket::ConnectingState状态。

//声明为一个类的成员对象
//使用QOBject moveToThread实现的多线程
socket = new QTcpSocket();

//禁用Nagle算法,减少小数据包发送延迟
socket->setSocketOption( QAbstractionSocket::LowDelayOption ,1 );

socket->setReadBufferSize( 8192 );

//不使用代理
socket->setProxy(QNetworkProxy::NoProxy ) ;

//明确使用IPV4地址
socket->connectToHost("192.168.1.120", port ,QIODevice::ReadWrite , QAbstractSocket::NetworkLayerProtocol::IPv4Protocal);

 代码为上面部分,解决思路,

QNetworkConfigurationManager manager;
QNetworkConfiguration config = manager.defaultConfiguration();
config.setConnectTimeout(3000);
QSharedPointer<QNetworkSession> spNetworkSession(new QNetworkSession(config));
socket->setProperty("_q_networksession", QVariant::fromValue(spNetworkSession));

暂未能解决问题,继续排查

不要使用bind本地地址方式,因为从bind状态到connecting状态,需要2秒的切换时间

相关文章:

  • Axure RP 9.0教程: 基于动态面板的元件跟随来实现【音量滑块】
  • 面试总结2025
  • Transformers快速入门-学习笔记(二)
  • AQS的重入机制和锁释放逻辑
  • 知网打不开
  • 思考我的未来职业
  • 操作系统高频(一)线程与进程
  • Win11更改锁屏背景图片的3种方法
  • 顺序表和链表
  • 一周学会Flask3 Python Web开发-SQLAlchemy数据迁移migrate
  • 数据结构与算法:数组相关力扣题:27.移除元素、977.有序数组的平方、209.长度最小的子数组、59. 螺旋矩阵 II
  • msyql--基本操作之运维篇
  • Tasklet_等待队列_工作队列
  • 【LeetCode 题解】算法:15.三数之和
  • IP 地址查询网站
  • 基于 CLIP 的文本与视频编码及相关知识解析
  • ngx_http_core_location
  • Cookie、Session 与 Token:核心区别与应用场景解析
  • centos 7 部署FTP 服务用shell 搭建脚本,使用时稍微修改自己所需需求
  • 深克隆和浅克隆(建造者模式,内含简版)