【问题标题】:polling to server to request information about server.Qt轮询服务器以请求有关 server.Qt 的信息
【发布时间】:2015-09-10 15:28:38
【问题描述】:

系统概述: Ubuntu 上的客户端

SDK/语言: QT/C++

限制:无法访问服务器代码。

问题:
我需要定期从客户端轮询服务器,并期望服务器回复响应消息。预期的消息是相当长的字符串。

说明:
我已经实现了与非 qt 服务器建立连接的 Qt 客户端。该软件在客户端和服务器上都是单线程的,并且按预期工作。这意味着用户要求客户端向服务器发送一些请求命令并返回服务器响应。现在,我需要定期轮询服务器以询问其状态信息。 我正在寻找有关如何实现它的建议。[注意:我不是在寻找源代码,而只是在寻找一些提示以及要使用的工具或库]

我认为的选项很少

1) 在带有 QTimer 的代码中使用 for 循环,将 status_request 发送到服务器并返回服务器响应

***** 反对意见:*****
i) 如果用户和新循环同时发送查询会发生什么。?

ii) for 循环是否有可能会耗尽所有资源?

2) 使用不同的线程进行轮询?你们怎么看?根据当前的要求,您认为引入新线程是个好主意吗?

3)还有其他更好可行的解决方案吗?

【问题讨论】:

  • 您确实需要了解什么是事件循环,以及如何编写异步代码。忘记“等待”任何事情。相反,当事情发生时,您会收到通知并让您的插槽运行,例如网络请求完成或计时器到期。

标签: c++ multithreading qt client-server


【解决方案1】:

使用 QTimer 在代码中使用 for 循环

为什么在for 循环中需要QTimer? 使用QTimer::singleShot

在程序启动时向服务器发送请求,并在每次服务器响应后执行QTimer::singleShot()。这会比每 N 毫秒发送一次请求要好。

不要忘记网络错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多