如何使用Qt连续从服务器向客户端发送数据?

时间:2012-12-26 12:23:18

标签: qt qt4

我正在使用客户端 - 服务器实现的Qt fortune服务器示例。在此示例中,服务器在有新连接时发送随机命运,然后关闭连接。但对于我的程序,我希望服务器在客户端连接后不断与客户端通信。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

只需不要断开客户端并存储QTcpServer::nextPendingConnection()返回的客户端套接字以便以后使用它们。

答案 1 :(得分:0)

嗯,这里有两种方法:

  1. 您没有关闭连接。当客户端连接到服务器时,将保持连接,直到客户端或服务器关闭。这样,客户端和服务器都可以随时发起请求。您将需要实现一些ping机制,其中客户端和服务器将定期发送小请求,以通知彼此它们仍然“活着”。当这些停止传入时,连接将关闭。客户必须随时做好准备,并在关机意外时重新建立连接。
  2. 使用REST架构实现此目的:http://en.wikipedia.org/wiki/Restful。这与浏览器用于获取WWW站点的模型相同。每次客户端需要来自服务器的东西时,它都会实例化一个新连接,发送请求,接收响应并关闭连接。当然,如果需要重新建立连接,它可能会达到性能,因此客户端应保持连接处于活动状态,直到他们认为不再需要它们或保持活动时间到期为止。这实际上是在Internet浏览器中实现的。请记住,此体系结构会阻止您直接从服务器向客户端发送请求。如果客户需要实时刷新信息,则需要在短时间内不断询问服务器。

答案 2 :(得分:0)

GitoriousGithub(以及许多其他网站)中有很多项目可以为您提供示例,但不完全是您正在寻找的内容,稍微研究并记录这些项目,你可以看到其他开发者如何让自己的专业学习。

我真的想到了一个有趣的项目,它完全符合他们的想法QtWebsocket,但当然必须始终考虑如何根据您的需要应用它。