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

GSt*_*Sta 1 c++ qt tcp client-server

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

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

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

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

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

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

先感谢您!

and*_*oni 5

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

例如,要检测传入的客户端实现虚拟void incomingConnection(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();
     }
 }
Run Code Online (Sandbox Code Playgroud)

这是如何发送消息:

void Client::sendMessage(const QString& message) {
    this->write(message.toUtf8());
    this->write("\n");
}
Run Code Online (Sandbox Code Playgroud)

就这样!