QTcpSocket和QTimer用于自动重新连接的最佳实践

时间:2017-12-04 22:49:03

标签: multithreading qthread qtcpsocket qtimer reconnect

我们正在尝试实现从多个服务器检索数据的应用程序,因此我们需要几个 QTcpSocket 实例来管理每个主机的连接。

我们正面临一些决定性的“设计”问题:

  • 我们应该实施多线程解决方案来实现目标吗? (可能是的)
  • 如果,我们是否应该使用“工作线程”(例如QThread示例moveToThread(socket_)中)作为最佳解决方案,还是更好?我们需要同时管理三个或更多连接,因此我们无法使用waitingForConnection(...),因为它是一个阻塞功能(根据我们的理解)
  • QTcpSocket重新连接的最佳做法是什么?也许是QTimer,但使用它的最佳方法是什么?

提前谢谢!

AD

1 个答案:

答案 0 :(得分:0)

嗯,我有一些设计问题就像这些,但在我的情况下,主要原因是避免我的连接时间被繁重的GUI处理延迟,而且,我的通信系统通过串行,但除此之外,我认为我的模型非常适合你的情况,这是我设计它的方式,我的问题,以及UmNyobe的答案:

QT QThread with QTimer and QSerial - parenting

基本上,我的" CommCore"的每个新实例; class创建自己的Serial,Timer和Thread,并将自己和它的子进程传递给这个Thread,避免GUI处理干扰通信时间。