赞
踩
本次设计主要是为了功能上的实现,因此对于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(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。