1

我正在研究一个需要“主”应用程序和许多“仆人”之间进行 tcp 通信的项目。(项目是c++,我也在使用qt)

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

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

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

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

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

先感谢您!

4

1 回答 1

5

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

例如,要检测客户端传入,您可以实现virtual void incomingConnection ( int socketDescriptor ) 。因此,在您的情况下,您可以将传入的客户端保存在地图中(地图,因为每个客户端都有自己的 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");
}

就这样!

于 2012-12-07T11:58:45.050 回答