1

我需要实现通过 tcp 工作的网络协议,该协议基本上可以通过以下方式工作:有推送的请求和读取的答案(只有一方可以发起请求)。我确实想以 QNetworkAccessManager 之类的方式实现它:当发送“requestst”时,QNAM 返回一个回复指针,一旦请求得到处理 - 有一个信号,结果可以从“reply”对象中使用。我确实想要在没有多线程的情况下实现它。

接下来的主要问题是:

如果套接字未连接,我有 3 个选项:1)返回错误(返回空指针以回复对象就像返回错误)2)从“sendRequest”内部发出“完成”(这是最邪恶的方法)3)返回“回复" 来自“sendRequest”,然后发出请求失败的信号。(最想要的)

我真的很喜欢 3-rd 选项,但我现在看到的唯一方法是使用带有 1 ms 单次调用的计时器 - 这基本上看起来像是实现此类事情的错误路径,我怎样才能延迟执行插槽(通过传递一些参数,例如饼干请求)?如果有一种方法可以延迟发送请求(例如将请求推送到队列,使用“回复”对象从调用返回,然后通过网络发送实际请求),那就太好了。所有这些看起来都像是在处理事件——但我不确定如何最好地处理这个主题。实施此类协议的最佳实践是什么?有什么建议吗?

4

0 回答 0