#ifndef MYTCPSERVER_H #define MYTCPSERVER_H #include #include #include #pragma pack(1) //数据包头 typedef struct { short int cmd; //命令 char check;//异或校验 unsigned int dataSize;//长度 } FilePkgHead; /** * @brief The MyTcpServer class 文件传输服务器 单连接 */ class MyTcpServer: public QTcpServer { Q_OBJECT public: MyTcpServer(QObject *parent = NULL); ~MyTcpServer(); protected: //新的连接 #ifdef Q_OS_WIN void incomingConnection(qintptr socketDescriptor); #endif #ifdef Q_OS_LINUX void incomingConnection(int handle); #endif public slots: void connectionHandle();//协议处理 void disconnectHandle(); //断开连接 //数据打包 QByteArray createDataPacket(int cmd1, int cmd2, QByteArray data); public: qint64 totalBytes; //数据总大小 QByteArray m_fileBuffer_Send; //缓冲文件,用于发送 QByteArray m_fileBuffer_Recv; //缓冲文件,用于接收 QTcpSocket *m_socket; //客户端 QString fileName; QString m_firstFilePath;//根目录前缀 private: void reflashFileTrans(); signals: void recvFileSuccess(QString filePath); }; #endif // MYTCPSERVER_H