QT tcpsocket 在断开后重新连接程序直接崩溃
2023-09-27 14:26:38 时间
最近再写tcp程序时无意中碰到个问题,tcp客户端断开连接后再重新连接,发送数据直接报错:
ASSERT: "m_buf" in file c:\users\qt\work\qt\qtbase\include\qtcore\5.9.1\qtcore\private\../../../../../src/corelib/io/qiodevice_p.h, line 116
后来定位到发送数据write()函数上,经过调试后发现tcpsocket断开连接后直接触发信号槽重新连接.导致出错,如果手动重新连接则没事.
最后改了信号槽的连接方式就解决。
connect(this,SIGNAL(disconnected()),this,SLOT(connect_server()));
connect(this,SIGNAL(disconnected()),this,SLOT(connect_server()),Qt::QueuedConnection);选择了
Qt::QueuedConnection模式
队列连接:内部通过postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。如果信号参数是引用类型,则会另外复制一份的。
信号槽触发后并不是实时调用,给QT时间处理socket。
相关文章
- QT(3)第一个QT程序
- Deepin(UOS使用linuxdeployqt打包qt程序【自测ok】
- UOS下 Qt程序无法输入中文的问题 【自测通过】
- QT 连接多个数据库,必须指定不同的连接名字
- Qt中创建控制台程序(cmd窗口)
- C++中运行一个程序的内存分配情况及qt中的内存管理机制
- Qt消息机制与window程序消息的对比分析
- Qt网络程序:基于TCP的服务器、客户端实例
- 关于Qt程序中动态和静态的几点总结
- Qt编写安防视频监控系统48-视频参数
- Qt开源作品36-程序守护进程
- Qt开源作品18-无边框背景透明窗体
- Qt编写百度地图综合应用(在线+离线+区域)
- Qt编写自定义控件17-按钮进度条
- Qt编写机房安全作业预警系统
- GammaRay观察Qt程序的运行状况
- ubuntu 交叉编译qt 5.7 程序到 arm 开发板
- Qt之QHeaderView自定义排序(QSortFilterProxyModel)
- Qt error ------ 出现Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
- QT 智能提示设置
- UOS20编译Qt程序:搭环境、解决bug
- Qt Package Project 打包发布程序
- Qt 显示gif