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

时间:2015-04-25 18:58:55

标签: c++ multithreading qt tcp client

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

我来自一个低级别的微控制器,我只需使用中断和(1)循环和标志来处理此任务。问题出现在PC上,这需要很长的处理器时间。我在qt中观看并阅读了很多关于套接字和线程的教程,但我仍然不知道什么是最好的方法以及如何正确地完成它。

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

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

1 个答案:

答案 0 :(得分:1)

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