基于TCP的网络聊天程序

本文介绍了基于TCP的网络聊天程序的实现,包括程序框架、数据传输过程、UI设计、信号与槽的运用。客户端通过QTcpSocket连接服务器,利用信号槽机制与服务器交互。服务器端则作为一个信息中转站,管理多个客户端连接。源码已上传至GitHub供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


基于TCP的网络聊天程序


  • 下图是最后效果图(因为是刚做好,还没来的及修改小细节,不过这都是小事);
    效果图
  • 在说明之前需要说明一点关于信号与槽的Qt常识
    • signals: 只声明,不定义! 手动定义的信号,使用 emit ,由自己手动触发;
    • slots:定义的槽可以通过自己定义的信号或者系统信号来被动调用;

好了,我们现在进入正题


1. 程序框架(数据传输的过程):

  首先,我来说明下整个大框架。我认为,在本次编程过程中,最重要的部分就是他了,没有之一!
  为了便于说明下面大家先看这张图,之后的说明都围绕这张图来说明:

  • 客户端方面:首先,客户端方面包含两部分。一个是ClientUI,用于布置客户端界面;另一个是从QTcpSocket继承来的子类ClientSocket,通过 ClientSocket + ServerIP + Port 连接到服务器, 成功连接后就可以通过ClientSocket 和服务器端进行通信了(发送数据和接受数据)。ClientUI 和ClientSocket 之间通过信号与槽进行信息传递(接收:ClientSocket从服务器接收到数据后,通过信号与槽传递给ClientUI,然后ClientUI将信息显示出来;发送:点击Send按钮后,ClientUI将数据通过信号与槽传递给ClientSocket,ClientSocket将信息传输给服务器端)。
  • 服务器端方面:服务器端方面稍复杂一点。一个用于布置服务器端界面的ServerUI;一个是从QTcpServer继承来的子类Server,Server 和ServerUI 之间传输数据与 ClientSocket 和 ClientUI 之间很类似,不再啰嗦,另外Server 还包含一个Socket的列表,用来记录连接到该服务器的socket信息。当有新信息收到后,可以通过该列表更新所有连接到该服务器端的客户端。在我看来,Server端就相当于一个信息中转站,任意一个客户端都可以通过Server与其他的客户端进行通信。
  • 客户端的ClientSocket和服务器端Socket列表中某一socket连接,进行通信。
  • 其实明白了以上内容就可以自己动手开始写了,下面信号与槽接口有需要可作为参考。

2. 设计UI,确定每个部件所需要实现的功能。

UI的编写很简单,只要写过一个基本就没什么问题,如有需要可以参考我之前的一篇博客Qt实例–计算圆的面积.

3. 根据实现功能设计信号与槽:

a.客户端


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值