断点续传与多线程传输转

断点续传与多线程传输转

ID:40260470

大小:40.00 KB

页数:7页

时间:2019-07-29

断点续传与多线程传输转_第1页
断点续传与多线程传输转_第2页
断点续传与多线程传输转_第3页
断点续传与多线程传输转_第4页
断点续传与多线程传输转_第5页
资源描述:

《断点续传与多线程传输转》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、c++实现文件传输之三:断点续传与多线程传输转继木马编程DIY的上两篇,现在我们开始讨论断点续传与多线程文件传输的实现.其实这两项功能是下载软件所必不可少的功能了,现在我们把它加到自己的木马中来感受感受.提到多线程下载,首先向网络蚂蚁的作者洪以容前辈致敬,正是由于网络蚂蚁而使得多线程下载被关注并流行起来.在这本篇文章中我们将简单的实现支持断点续传和多线程传输的程序.为了更清晰的说明问题,我们将断点续传与多线程传输分别用两个程序来实现多线程传输实现实现原理将源文件按长度为分为N块文件,然后开辟N个线程,每个线程传输一块,最后合并所有线线程文件.比如一个

2、文件500M我们按长度可以分5个线程传输.第一线程从0-100M,第二线程从100M-200M......最后合并5个线程文件.实现流程1.客户端向服务端请求文件信息(名称,长度)2.客户端跟据文件长度开辟N个线程连接服务端3.服务端开辟新的线程与客户端通信并传输文件4.客户端将每线程数据保存到一个文件5.合并所有线程文件编码实现大体说来就是按以上步骤进行,详细的实现和一些要点,我们跟据以上流程在编码中实现结构定义在通信过程中需要传递的信息包括文件名称,文件长度,文件偏移,操作指令等信息,为了方便操作我们定义如下结构代码:typedefstruct{

3、       char       Name[100];       //文件名称       int               FileLen;       //文件长度       int               CMD;               //操作指令       int               seek;               //线程开始位置       SOCKETsockid;               }FILEINFO;1.请求文件信息客户端代码如下代码:       FILEINFOfi;       

4、memset((char*)&fi,0,sizeof(fi));       fi.CMD=1;               //得到文件信息       if(send(client,(char*)&fi,sizeof(fi),0)==SOCKET_ERROR)       {               cout<<"SendGetFileInfoError/n";       }服务端代码如下       while(true)       {               SOCKETclient;               if(clien

5、t=accept(server,(sockaddr*)&clientaddr,&len))               {                       FILEINFORecvFileInfo;                       memset((char*)&RecvFileInfo,0,sizeof(RecvFileInfo));                       if(recv(client,(char*)&RecvFileInfo,sizeof(RecvFileInfo),0)==SOCKET_ERROR) 

6、                      {                               cout<<"TheClinetSocketisClosed/n";                               break;                       }else                       {                               EnterCriticalSection(&CS);               //进入临界区                      

7、         memcpy((char*)&TempFileInfo,(char*)&RecvFileInfo,sizeof(RecvFileInfo));                               switch(TempFileInfo.CMD)                                       {                                       case1:                                                GetInfoPro

8、c       (client);                                     

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。