使用qt的多客户端/服务器TCP应用程序

Multi-client / server tcp application using qt

本文关键字:服务器 TCP 应用程序 客户端 qt 使用      更新时间:2023-10-16

我正在做一个项目,该项目需要"主"应用程序和许多"仆人"之间的TCP通信。(该项目是用C ++的,我也在使用Qt)

"仆人"将进行一些处理并将结果发送给"主人"。到目前为止,它是一个简单的多客户端 - 服务器应用程序。

问题是,在随机时间,主人会向仆人请求一些额外的信息,甚至向他们发送信息以改变他们的处理方式。

如果我的项目基于财富客户端/服务器示例,我是否能够从主服务器向仆人发送消息?(关于如何做的任何想法?

还是我需要将我的工作基于其他东西(比如聊天客户端?

欢迎对TCP客户端/服务器通信提出任何其他建议,但由于我已经使用Qt,我宁愿不添加其他库。

提前谢谢你!

在Qt中构建服务器非常简单。你必须派生QTcpServer并实现一些方法或插槽。这对客户也有效。派生QTcpSocket,你将拥有你的客户端。

例如,要检测客户端传入,您实现虚拟无效传入连接(int socketDescriptor)。因此,在您的情况下,您可以将传入的客户端保存在映射中(映射,因为每个客户端都有自己的 ID)。

在服务器和客户端中,您可能都希望实现readyRead()插槽。这个插槽做你想要的通信事情。实际上,在此插槽中,服务器可以接收和发送到客户端消息,反之亦然。

这是一个典型的现成:

  void Client::readyRead() {
     while (this->canReadLine()) {
            // here you get the message from the server
        const QString& line = QString::fromUtf8(this->readLine()).trimmed();
     }
 }

以下是发送消息的方法:

void Client::sendMessage(const QString& message) {
    this->write(message.toUtf8());
    this->write("n");
}

就这样!