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,可以随便取名的哈。
QT实现两界面类似QQ聊天_第1张图片
2.建立一个QT Application工程
QT实现两界面类似QQ聊天_第2张图片
3.name可以取成刚才那个文件夹的名字,然后保存到刚新建那个文件夹里边。
QT实现两界面类似QQ聊天_第3张图片
4.默认下一步
QT实现两界面类似QQ聊天_第4张图片
5.这里要用QWidget
QT实现两界面类似QQ聊天_第5张图片
6.finish后界面变成下面这个样子,工程创建成功(傻瓜教程)
QT实现两界面类似QQ聊天_第6张图片
二、添加必要信息

1.添加需要的头文件

#include 
#include 
#include 

QT实现两界面类似QQ聊天_第7张图片
2.添加一个网络模块

network

QT实现两界面类似QQ聊天_第8张图片
3.声明两个对象

QTcpServer *tcpServer;
QTcpSocket *tcpSocket;

QT实现两界面类似QQ聊天_第9张图片

三、UI界面的设置

1.双击我们的ui
QT实现两界面类似QQ聊天_第10张图片
然后界面这样,中间就是我们设计的地方,可以自己设定界面的大小。
QT实现两界面类似QQ聊天_第11张图片
2.按住左边箭头尾部的功能模块儿拖拽到编辑区改大小或者调整位置(各模块不要拖拽错了哟)

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

QT实现两界面类似QQ聊天_第17张图片

QT实现两界面类似QQ聊天_第18张图片
6.改变量名,这个变量名后面代码中会用到(如果要用后面的代码的话就改成我这样吧,也可以自己更改然后在代码里面更改槽函数的名字既可以哦)。(双击就可以更改啦)
QT实现两界面类似QQ聊天_第19张图片

四、服务器代码

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

widget.cpp

#include "widget.h"

你可能感兴趣的:(嵌入式软件,C++,笔记)