ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-09 21:15:13  阅读:174  来源: 互联网

标签:c tcp qt client-server


我正在一个需要“主”应用程序和许多“仆人”之间进行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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有