当套接字错误发生时,QWebSocket 底层的 QTcpSocket(或 QSslSocket)是否会被自身破坏?

2023-12-26

When a QTcpSocket (or QSslSocket)升级为QWebSocket,前者必须存储以供将来使用,因为它需要......

  1. 无论何处都移动到同一个线程QWebSocket正在moveToThread()
  2. deleteLater()每当QWebSocket正在被摧毁

未能做到1.导致未定义的行为并且很可能导致崩溃。虽然没能做到2.导致内存泄漏,如果您有QWebSocketServer (QWebSocketServer - 不释放内存 https://stackoverflow.com/questions/37296785/qwebsocketserver-not-releasing-memory).
我以艰难的方式学到了这些,因为它没有很好的记录。 :-)

最近为我们进行了代码重构QWebSocketServer建筑学。因此,我看到了一种奇怪的行为。 --> 每当远程客户端出现错误时,即QWebSocket::error()信号,底层QTcpSocket发射与destroy()由外部事物发出信号并可能被删除。
可能存在一些编码不匹配的可能性,这会导致这种情况,但在我看来,这种可能性较小。所以在不深入代码细节的情况下,我想问......

Question: 在这样的背景下QWebSocket, 是基础QTcpSocket在某些情况下被Qt框架破坏?


当 Web 套接字发生错误或断开连接时,底层套接字将被 Qt 框架销毁。
由于Qt管理底层的内存QTcpSocket,假设在2.是错的。

我发现存在编码错误,我没有有效地执行deleteLater()在早期的代码中。这给我的印象是我们必须管理底层QTcpSocket.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当套接字错误发生时,QWebSocket 底层的 QTcpSocket(或 QSslSocket)是否会被自身破坏? 的相关文章

  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • 在调用堆栈中看到大量 clr!CLR Semaphore::Wait

    我们看到很多像下面这样的调用堆栈 我可以知道什么条件 情况会发生这种情况吗 OS Thread Id 0x48654 559 Current frame ntdll NtWaitForSingleObject 0xa Child SP Re
  • 如何启动异步任务对象

    我想开始收集Task同时处理对象并等待所有对象完成 下面的代码显示了我想要的行为 public class Program class TaskTest private Task createPauseTask int ms works w
  • 代码块 power 函数在 c 中不起作用

    我正在使用代码块来学习c 我的代码是 include
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • 在不使用 ncurses 的情况下用 C/C++ 编写“真正的”交互式终端程序,例如 vim、htop...

    不 我不想使用ncurses 因为我想了解如何 终端可以工作 并且我自己编程也很有趣 没有 必须是可移植的 它必须只能在基于 linux xterm 的终端仿真器上工作 我想做的是编写一个交互式终端应用程序 例如 htop 和 vim 我的
  • 无缝滚动瓷砖地图

    我正在开发一个自上而下的角色扮演游戏 并且想要实现无缝滚动地图 也就是说 当玩家探索世界时 地图之间没有加载屏幕 也没有通往下一个区域的 门 我有两种方法可以打破世界 在顶层 我有 区域 它只是 9 个 地图 的集合 这些区域仅由目录表示
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • C++:初始化静态字符串成员

    我在 C 中初始化静态字符串成员时遇到一些问题 我有几个类 每个类都包含几个表示 id 的静态字符串成员 当我通过调用静态函数初始化变量时 一切都很好 但是 当我想为一个变量分配另一个变量的值时 它仍然保留空字符串 这段代码有什么问题 st
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 本地主机上的 .net HTTP_X_FORWARDED_FOR NULL

    抱歉 如果其他地方已经回答了这个问题 我找不到它 如果没有 我会尝试查找访问过该站点的机器的原始 IP 根据我的基本理解 变量HTTP X FORWARDED FOR无论代理和其他过滤器如何 都会显示用户的 IP 如果这是真的 我正在尝试对
  • 如何强制用户仅使用“new”创建从我派生的类的对象?

    为了实现引用计数 我们使用IUnknown http msdn microsoft com en us library ms680509 VS 85 aspx类接口和智能指针模板类 该接口具有所有引用计数方法的实现 包括Release vo
  • C++ 错误:从“char”到“const char*”的转换无效

    我对 C 完全陌生 我创建了这个函数 bool guessWord string compWord cout lt lt Guess a letter string userLetter cin gt gt userLetter for u
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • char* argv[] 在 c/c++ 中如何工作? [复制]

    这个问题在这里已经有答案了 我知道它用于使用命令行中的参数 但我没有得到声明 字符 argv 它是否意味着指向 char 数组的指针 如果是的话为什么没有大小 如果不是动态数组 就不需要有大小吗 我做了一些研究 发现有人说它会衰减为 cha
  • 未找到 _sqlite3_open 等符号错误

    您好 我收到此错误 Undefined symbols sqlite3 open referenced from main in ccRlWVer o sqliite3 close referenced from main in ccRlW
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • 在 C# WinForms 中预览文档(Word、Excel、PDF、文本文件等)?

    我正在开发一个 C WinForms 应用程序 我希望能够 预览 其中的各种文档类型 也就是说 当用户从列表中选择文件名时 它会在下面以相同的形式显示所选文件的预览 这很像 Outlook 允许您无需双击即可预览选定邮件的方式 有没有什么方
  • 类模板的 C++ 静态成员 - 链接器警告“多重定义”[重复]

    这个问题在这里已经有答案了 假设出于某种原因 我想要一个类模板 MyTemp 和一些静态数据成员 smDummyVar Mytemp h ifndef MY TEMP H define MY TEMP H template

随机推荐

  • 如何在Jaspersoft Studio中制作带有动态列的表格? [复制]

    这个问题在这里已经有答案了 我需要在 Jaspersoft Studio 中制作这张表 我的桌子有时有一个测试 两个 n 个测试或什么都没有 是否可以 我该如何解决这个任务 您无法在 jasper 中动态创建列 但在创建一些固定数量的列后
  • Android 开始屏幕上使用的手势

    使用什么 Android Api 来在 Android 上的开始屏幕上向左或向右滚动 最简单的方法是检测 Fling 手势 Android API 有一个内置的检测器 用于基本手势 如快速滑动 滚动 长按 双击 捏合缩放等 该文档位于htt
  • Mix.exs 文件更改 - (SyntaxError) mix.exs:65: 意外标记:“”(第 1 列,代码点 U+0000)

    保存所做的任何更改mix exsMac OS High Sierra 10 13 6 上的文件会导致文件开头处出现空字符 我最初是针对 intellij elixir 插件打开的 但问题是使用任何文本编辑器 sublime vim inte
  • 什么时候将标志存储为位掩码比使用关联表更好?

    我正在开发一个应用程序 其中用户具有不同的权限来使用不同的功能 例如读取 创建 下载 打印 批准等 权限列表预计不会经常更改 我有几个选项可以选择如何将这些权限存储在数据库中 在什么情况下选项 2 会更好 Option 1 使用关联表 Us
  • 有人可以解释一下这种类型的递归是如何工作的吗?

    我在递归中遇到了这个问题 我不明白它是如何工作的 我了解递归的基础知识 但这让我完全困惑 请帮忙 main foo 3 void foo int x if x gt 1 foo x printf d x foo x 我以为这个程序不会打印任
  • 使用 ImageMagick 检测 EXIF 方向并旋转图像

    佳能数码单反相机似乎可以横向保存照片并使用exif orientation进行旋转 问题 如何使用 imagemagick 使用 exif 方向数据将图像重新保存到预期方向 以便不再需要 exif 数据以正确的方向显示 Use the 自动
  • 检查 SQL 对象是否被任何其他 SQL 对象引用

    我刚刚在读书这个所以线程 https stackoverflow com questions 26336840 accessing the name of the currently executing stored procedure n
  • 解析没有键的 JSON 数组

    我正在尝试解析jsonArray但无法理解这种格式 如何解析这种类型jsonArray 谁能帮我 rows farmfresh 20171211 4 farmfresh product d 20171215 4
  • Selenium ChromeDriver 切换选项卡

    当我单击测试中的链接时 它会打开一个新选项卡 我希望 ChromeDriver 然后专注于该选项卡 我尝试了以下代码来让 ChromeDriver 使用 ctrl tab 快捷方式更改 tabas Actions builder new A
  • 函数“fn:encode-for-uri”导致 XSLT 出错

    我需要对 XSLT 中的字符串进行 URL 编码 但函数 fn encode for uri 破坏了脚本 我在网上查了一下 显然它是命名空间的一部分 http www w3 org 2005 xpath functions 因此 我将以下行
  • 与另一个启动文件链接

    我正在尝试使用以下命令将程序与我自己的启动文件链接STARTUPLD 脚本中的指令 ENTRY start STARTUP my crt1 o GCC驱动程序用于链接程序 不关心像libgcc等库路径 gcc T my script ld
  • 如何仅使某些结构字段可变?

    我有一个结构 pub struct Test pub x i32 pub y i32 我想要一个改变这个的函数 简单 pub fn mutateit mut self self x 1 这使得整个结构在函数调用期间是可变的mutateit
  • java中工厂方法模式如何使用泛型?

    我的代码如下所示 public interface BaseDAO marker interface public interface CustomerDAO extends BaseDAO public void createCustom
  • 如何让 SoapClient 尊重会话?

    我正在使用电子商务购物车的 SOAP API 但我似乎无法让会话在不同页面中持续存在 作为示例 我下面有一些测试代码 带有一堆调试消息 它将一个项目添加到购物车 然后查看购物车 当我在浏览器中运行它时 它工作得很好 但是如果我刷新页面 我预
  • Flutter Google Chart Gauge - 将标签放在中心内

    我正在看图表颤振 https pub dartlang org packages charts flutter包裹 我需要实现一个仪表图表 其中有一个分段及其标签值位于仪表的中心 请参阅下面的模型文件 其中所需类型的三个图表放置在一行中 使
  • 仅使用变量进行单元测试

    我正在使用 Objective c 为 iPhone 应用程序编写单元测试 例如 我只想在编译测试用例时使用一些变量 ifdef UNIT TESTING synthesize requestFinished networkAvailabl
  • DTO 和实体是否都应该具有输入验证

    我有一个 WCF 层 我的域模型位于该 WCF 层后面 我使用 Nhibernate 作为 ORM 工具 我的所有业务逻辑 数据访问等都将位于此 WCF 层后面 我正在向我的客户公开 DTO 我有以下问题 1 我应该创建DTO吗 直接向 W
  • 针对开发的伪代码编辑器的建议[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python Minidom:更改节点的值

    我正在使用 Python 的 minidom 库来尝试操作一些 XML 文件 这是一个示例文件
  • 当套接字错误发生时,QWebSocket 底层的 QTcpSocket(或 QSslSocket)是否会被自身破坏?

    When a QTcpSocket or QSslSocket 升级为QWebSocket 前者必须存储以供将来使用 因为它需要 无论何处都移动到同一个线程QWebSocket正在moveToThread deleteLater 每当QWe