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

时间:2012-12-07 11:31:31

标签: c++ qt tcp client-server

我正在开发一个需要在“主”应用程序和许多“服务员”之间进行tcp通信的项目。 (该项目采用c ++,我也使用qt)

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

事情是,在随机时间,主人会从仆人那里请求一些额外的信息,甚至发送信息来改变他们处理的方式。

如果我将我的项目建立在财富客户/服务器示例上,我是否可以从主人那里向仆人发送消息? (关于如何的任何想法?)

还是我需要将我的工作建立在其他方面(比如聊天客户端?)?

欢迎任何有关tcp客户端/服务器通信的其他建议,但由于我已经使用qt,我宁愿不添加其他库....

提前谢谢你!

1 个答案:

答案 0 :(得分:5)

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

在示例中,为了检测传入的客户端实现虚拟void incomingConnection(int socketDescriptor) .so在您的情况下,您可以保存传入地图的客户端(地图,因为每个客户端都有自己的ID)。

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

这是一个典型的 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");
}

就是这样!

相关问题