编程语言
首页 > 编程语言> > c-使用qt的多客户端/服务器tcp应用程序

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

作者:互联网

我正在一个需要“主”应用程序和许多“仆人”之间进行tcp通信的项目上.
(项目在C,我也使用QT)

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

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

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

还是我需要基于其他内容(例如聊天客户端)?

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

先感谢您!

解决方法:

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

例如,要检测到客户端的传入,您可以实现虚拟void entryConnection(int socketDescriptor).因此,在这种情况下,您可以将传入的客户端保存在map(一个映射中,因为每个客户端都有自己的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");
}

就这样!

标签:c,tcp,qt,client-server
来源: https://codeday.me/bug/20191009/1882099.html