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