QT实现两界面类似QQ聊天

题目要求:

在基于QT的界面基础上,两个窗口通过套接字实现网络通信,所用协议包括TCP和UDP协议,为了模拟不同的计算机,请大家建立两个虚拟机,一个虚拟机运行一个类似QQ的界面,两个界面实现类似QQ聊天。

1.什么是TCP和UDP协议,他么各有什么特点和优缺点?
  • TCP(传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
  • UDP(用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输很快。
  • (1)TCP是面向连接的,UDP是无连接的即发送数据前不需要先建立链接。
  • (2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
    并且因为TCP可靠,面向连接,不会丢失数据因此适合大数据量的交换。
  • (3)TCP是面向字节流,UDP面向报文,并且网络出现拥塞不会使得发送速率降低(因此会出现丢包,对实时的应用比如IP电话和视频会议等)。
  • (4)TCP只能是1对1的,UDP支持1对1,1对多。
  • (5)TCP的首部较大为20字节,而UDP只有8字节。
  • (6)TCP是面向连接的可靠性传输,而UDP是不可靠的。
2.什么又是套接字?
  • 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。

一、新建工程

1.先建立一个新的空文件夹取名为TcpServer,可以随便取名的哈。
在这里插入图片描述
2.建立一个QT Application工程
在这里插入图片描述
3.name可以取成刚才那个文件夹的名字,然后保存到刚新建那个文件夹里边。
在这里插入图片描述
4.默认下一步
在这里插入图片描述
5.这里要用QWidget
在这里插入图片描述
6.finish后界面变成下面这个样子,工程创建成功(傻瓜教程)
在这里插入图片描述
二、添加必要信息

1.添加需要的头文件

#include <QTcpServer>
#include <QTcpSocket>
#include <QString>

在这里插入图片描述
2.添加一个网络模块

network

在这里插入图片描述
3.声明两个对象

QTcpServer *tcpServer;
QTcpSocket *tcpSocket;

在这里插入图片描述

三、UI界面的设置

1.双击我们的ui
在这里插入图片描述
然后界面这样,中间就是我们设计的地方,可以自己设定界面的大小。
在这里插入图片描述
2.按住左边箭头尾部的功能模块儿拖拽到编辑区改大小或者调整位置(各模块不要拖拽错了哟)

在这里插入图片描述
3.还是一样的拖拽3个按钮到编辑区并改名(如果没有中文输入法的话在Windows下面输入中文然后复制到虚拟机里面)
在这里插入图片描述
4.我们在窗口添加两个框,让其更加美观
在这里插入图片描述
在这里插入图片描述
我们把输入框添加了外框之后外框会置于输入框的上面,会导致我们使用的时候鼠标无法点击到输入框,我们找到输入框这个对象后右键,然后置顶。
在这里插入图片描述
5.界面就差不多了,我们开始运行一下,点击然后选择保存所有(Save All)

在这里插入图片描述

在这里插入图片描述
6.改变量名,这个变量名后面代码中会用到(如果要用后面的代码的话就改成我这样吧,也可以自己更改然后在代码里面更改槽函数的名字既可以哦)。(双击就可以更改啦)
在这里插入图片描述

四、服务器代码

main.cpp里面的代码不用改变,如果想修改窗口标题,可以添加一行代码,下面客户端的时候会提到的。

widget.cpp

#include "widget.h"
  • 21
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大家好我是覃同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值