gpt4 book ai didi

c++ - Qt 中的非阻塞线程 tcpi 客户端

转载 作者:可可西里 更新时间:2023-11-01 02:51:43 26 4
gpt4 key购买 nike

请让我解释一下我的问题是什么:我有一个 Gui 应用程序,它必须连接到远程服务器并保持连接一段时间,直到用户决定退出连接,否则服务器将退出。我希望在单独的线程中创建客户端连接机制。如果客户端应该能够异步接收数据,并以事件驱动的方式通知主 gui 线程。该线程还应该能够从 gui 线程接收数据以发送到服务器。

我来自一个低级微 Controller 的地方,在那里我会简单地使用中断和 while(1) 循环和标志来处理这个任务。问题出在个人电脑上,这会占用大量处理器时间。我看过并阅读了很多关于 qt 中的套接字和线程的教程,但我仍然不知道什么是最好的方法以及如何正确地进行。

目前,我在远程目标上有一个测试服务器,它能够从我尝试编写的 Qt 客户端接收连接。我现在在 Qt 中为我的客户提供了一个类,它继承自 Qthread,但后来我读到它不再是最好的方法了。我希望在新线程(从 gui 线程触发)中创建一个客户端实例,它将永远与 exec() 一起挂起。现在我不知道如何使用信号处理来自服务器的传入数据和来自主 GUI 线程的传入命令。一般来说,我可能知道如何在低层次上实现它,但我读到了许多 qt 提供的高级函数,我希望使用它。

我真的很乐意在这件事上提供帮助。我尝试搜索,但没有找到任何可靠的、最新的代码示例。有人可以向我解释如何在发送/接收一些数据后不会断开连接的新线程中创建客户端实例,而是保持连接并保持对事件驱动样式中服务器调用和 gui 线程调用的响应吗?

最佳答案

可能使用通用的 Qt 套接字机制而不是单独的线程对你来说会更好。 Sockets 与 MCU 中断非常相似并且使用简单。对于您的应用程序请求,它必须足够。

关于c++ - Qt 中的非阻塞线程 tcpi 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29869398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com