当前位置:   article > 正文

Qt多文件传输功能实现及方法概述_qt udp传输文件夹下的所有文件

qt udp传输文件夹下的所有文件

前言

本次设计主要是为了功能上的实现,因此对于ui界面的设计都是怎么简单怎么来的,主要的功能就是实现多个文件的发送与接收,即客户端发送,服务端接收保存,并且删去客户端的已发送的文件。

代码实现概述

这里就不在概述tcp通信的相关的内容,主要围绕本文设计进行叙述:
第一就是文件发送的流程图,单次文件内容发送主要分为两次,首先是文件名,可用于服务端建立新的文件;其次是文件大小,可用服务端判断是否完全接收完;最后是文件地址,用于服务端删除客户端发送的文件,也可以把这认为是简单的协议:
在这里插入图片描述
第二就是多文件的发送:这里用到了QFileDialog类的getOpenFileNames函数(可以固定打开文件的类型),返回QStringList的文件路径集合,接下来就是遍历发送。
第三就是防止发生粘包的情况,使用QIODevice类waitForBytesWritten函数,每次等待数据内容发送。

客户端代码实现

tcpclient.h文件:

#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include <QtWidgets/QMainWindow>
#include "ui_tcpclient.h"
#include <QHostAddress>
#include <QFile>
#include <QTcpSocket>


class TcpClient : public QMainWindow
{
   
	Q_OBJECT

public:
	TcpClient(QWidget *parent = 0);
	~TcpClient();
	void sendData();

private:
	Ui::TcpClientClass ui;
	int port;
	QString ip;
	QTcpSocket *tcpSocket;   //服务端连接套接字
	QFile locFile;      //待发送的文件
	QList<QString> fileNames;
	QList<QString> paths;
	QList<qint64> fileSizes;
	qint64 sendSize;
	int sendTime;

private slots:
	void slotSend();   //发送
	void slotOpen();   //打开文件
	void sendMessage();  //传输文件
	void sendData(
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/305181
推荐阅读
相关标签
  

闽ICP备14008679号