目录
项目描述
利用Tcp协议实现服务器端和客户端数据的传输,客户端向服务器端传输文件(音频、视频、文本)类似客户端上传文件
Qt下Tcp服务器端和客户端流程:

具体流程:
客户端:
头文件:
#include <QWidget>
#include <QTcpSocket>
#include <QFileDialog>//显示文件对话框
#include <QFileInfo>//获取文件信息
#include <QTimer>
- 客户端连接服务器
客户端只需一个接收套接字 tcpSocket = new QTcpSocket(this);
tcpSocket->connectToHost(Ip,port);连接到服务器端
开辟一个QByteArray array内存空间,通过信号与槽connect

- 1选择要传输的文件
QString filePath = QFileDialong::getOpenFileName(this);
QFileInfo FileData(filePath);//获取文件信息
filename = FileData.fileName();//获得文件名字
filesize = FileData.size();//获得文件大小 字节
- 2文件操作
QFile file创建一个文件描述符,

- 3文件发送
文件的发送分为两个部分:
a.先发送一个包含文件信息的字符串类型为" filename**filesize "
QString head = filename + "**" + QString::number(filename); qint64 length = tcpSocket->write(head.toutf8); if(length>0)//发送成功 myTimer->start(20);//设置一个定时器 防止内容粘包 else //发送不成功 file.close();
b.防止粘包发送成功后设置一个延迟 设置一个定时器myTimer 开始发送文件本身
myTimer = new QTimer(this);
connect(myTimer,&QTimer::timeout, this ,[&](){
myTimer->stop();
qint64 len;
qint64 sendSize = 0;//已经发送文件大小
do{ char buf[4*1024] = {0};//一次读取char这么大
len = 0;
len = file.read(buf,sizeof(buf));//从file中读取4096放到buf中
t

该项目描述了在Qt环境下利用TCP协议实现服务器端和客户端的数据传输,特别是客户端如何向服务器端上传文件(如音频、视频、文本)。客户端选择文件后,先发送文件名和大小信息,然后分块发送文件内容。服务器端监听连接,接收文件名和大小信息后开始接收文件,并显示接收进度。
最低0.47元/天 解锁文章
6269





