QT tcp网络聊天室群聊的实现

栏目: C++ · 发布时间: 6年前

内容简介:QT tcp网络聊天室群聊的实现

tcp编程通过分成服务器端与客户端

在QT里, tcp编程需用到两个类: QTcpServer, QTcpSocket

服务器端:

//1.  创建一个QTcpServer对象
        QTcpServer *server = new QTcpServer;

    //2. 调用对象的listen函数成员进行绑定地址与端口号, 并监听端口
        server->listen(QHostAddress::Any, 9999); // 绑定端口号9999, 成功返回true, 失败返回false

    // 3.  连接对象的newConnection信号到一个槽函数,用于处理客户端的连接。
            connect(server, SIGNAL(newConnection()), this, SLOT(new_client()));  //当有客户端连接时,对象会发出newConnection信号,客户端的连接处理就在触发的槽函数new_client里处理了。

    // 4. 在处理客户端连接的槽函数new_client里处理连接. 每个客户端连接上来后,在服务器端就会有一个QTcpSocket对象对一个客户端通信使用,如多个客户端连接上来,则会有多个QTcpSocket对象.
    QTcpSocket *client;

    client = server->nextPendingConnection(); //处理客户端连接, 调用此处理函数后,会得到一个QTcpSocket对象的地址,此对象专用于这个连接上来的客户端通信使用。

    // QTcpSocket对象在服务器端用于与客户端通信使用,当客户端发数据到服务器端时,它会发出信号readyRead, 通知接收客户端的数据. 当客户端断开连接时,会发出disconnected信号,通知客户端已断线.发送数据则调用对象的write函数即可.

    //连接信号,做相应的处理
    connect(client, SIGNAL(readyRead()), this, SLOT(tcp_read()));  // tcp_read槽函数用于接收客户端的数据, 在槽函数里调用QTcpSocket对象的read函数即可.

   connect(client, SIGNAL(disconnected()), this, SLOT(lost_client()));  // lost_client槽函数用于处理客户端断开连接

客户端:

// 1. 创建QTcpSocket对象
       QTcpSocket *tcp = new QtcpSocket;

    // 2. 连接服务器端的IP地址与端口号, 连接成功会发出connected信号。也可以直接调用waitForConnected等待连接的结果。 
    tcp->connectToHost("192.168.250.250", 9999);

    // 3. 调用对象的read/write函数即可与服务器端进行收发数据了。当服务器端有发数据过来时,会发出readyRead信号,在连接此信号的槽函数里接收数据即可.

网络聊天室的技术要点:

因在服务器端每个客户端连接,都会产生一个QTcpSocket对象用于与对应的客户端通信。而客户端个数是不确定的,所以可以用 QList<QTcpSocket *> 的链表存放每个对象的地址。

群发的实现:

接收到客户端发过来的内容后,遍历链表,给每个客户端发送同一份内容即可。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

美团机器学习实践

美团机器学习实践

美团算法团队 / 人民邮电出版社 / 2018-8-1 / 79.00元

人工智能技术正以一种超快的速度深刻地改变着我们的生活,引导了第四次工业革命。美团作为国内O2O领域领 先的服务平台,结合自身的业务场景和数据,积极进行了人工智能领域的应用探索。在美团的搜索、推荐、计算广告、风控、图像处理等领域,相关的人工智能技术得到广泛的应用。本书包括通用流程、数据挖掘、搜索和推荐、计算广告、深度学习以及算法工程6大部分内容,全面介绍了美团在多个重要方面对机器学习的应用。 ......一起来看看 《美团机器学习实践》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具