RakNet--File List Transfer
FileListTransfer概览 |
接收发送文件更加容易
FileListTransfer插件用于发送可以读取进FileList类的文件列表。它与DirectoryDeltaTransfer插件类似,它并不发送预先存在的文件的目录信息,也不是完成将文件写到disk的任务。它仅仅处理要发送文件的网络传输部分。
使用: 1.服务器:使用一个允许发送文件的系统的地址作为参数,调用SetupReceive(…),当数据到达时,系统会调用FileListTransferCBInterface派生的回调处理器。 2.客户端:将要发送数据编码到FileList类。 3.客户端:使用FileList类实例调用Send(…),一组用户定义的ID用来标识这一组文件,参数传递给RakPeerInterface::Send()或TCPInterface::Send(),需要一个布尔类型的参数,它标识文件是否需要压缩。压缩速度并不快,因此除非带宽非常有限,否则保持原始参数不要修改。
|
FileList概览 |
FileList类存储了一个文件和数据列表,并且包含了一组处理硬件驱动的功能函数。它最初是为Autopatcher写的,但是也可以用于你自己专用目的。 参考FileList.h,查看所有的函数和参数的一个完整的描述信息。
// 在一个指定的目录增加所有的文件 void AddFilesFromDirectory(const char *applicationDirectory, const char *subDirectory, bool writeHash, bool writeData, bool recursive, unsigned char context); // 释放所有的内存 void Clear(void); // 将所有的编码数据写入到bitstream void Serialize(RakNet::BitStream *outBitStream); // 从bitstream中读取出所有的编码数据,在反序列化之前调用Clear() bool Deserialize(RakNet::BitStream *inBitStream); // 给定已存的一组文件,从applicationDirectory指定目录中搜索相同的文件 // 对于每一个丢失或者不同的文件,将这个文件添加到missingOrChangedFiles。 // 注意:此处没有写入文件内容,如果alwaysWriteHash参数为真,仅仅写入hash。 void ListMissingOrChangedFiles(const char *applicationDirectory, FileList *missingOrChangedFiles, bool alwaysWriteHash, bool neverWriteHash); // 返回需要写入与当前的FileList对象对比的文件。 void GetDeltaToCurrent(FileList *input, FileList *output, const char *dirSubset, const char *remoteSubdir); // 假设FileList包含了大概的文件名列表,其中并不包含数据,为这些文件读取数据 void PopulateDataFromDisk(const char *applicationDirectory, bool writeFileData, bool writeFileHash, bool removeUnknownFiles); // 将所有的文件写到磁盘,使用applicationDirectory参数传递目录前缀。 void WriteDataToDisk(const char *applicationDirectory); // 假设文件数据已经放到了内存,增加一个文件。 void AddFile(const char *filename, const char *data, const unsigned dataLength, const unsigned fileLength, unsigned char context); // 增加一个文件,从磁盘读取文件。 void AddFile(const char *filepath, const char *filename, unsigned char context); // 删除所有存储在文件列表中的文件 void DeleteFiles(const char *applicationDirectory);
|
![]() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步