点对点(P2P)多线程断点续传的实现(3)

2019-03-04 13:22

CFile destFile; FILE* fp=NULL; //是第一次传的话

if((fp=fopen(fname,\

destFile.Open(fname, CFile::modeCreate|CFile::modeWrite | CFile::typeB

inary|CFile::shareDenyNone); else

//如果文件存在,是续传

destFile.Open(fname,CFile::modeWrite | CFile::typeBinary|CFile::shareD enyNone);

//文件指针移到指定位置

destFile.Seek(filerange[index*2],CFile::begin); //发消息给服务器,可以传文件了

sendn(m_socket,(char*)&fileinfo1,100);

CFile myfile; CString temp;

temp.Format(\ m_temp=fname+temp;

//当各段长度还不为0时 while(re>0){

len2=re>SIZE?SIZE:re;

//读各段内容

int len1=readn(m_socket,m_buf,len2); //有错的话 if(len1<0){

closesocket(m_socket); break; }

//写入文件

destFile.Write(m_buf, len1);

//更改记录进度信息

filerange[index*2+1]-=len1; filerange[index*2]+=len1; //移动记录文件指针到头

myfile.Seek(0,CFile::begin); //写入记录进度

myfile.Write(&filerange[index*2],sizeof(int)); myfile.Write(&filerange[index*2+1],sizeof(int));

//减去这次读的长度 re=re-len1;

//加文件长度

doinfo.totle=doinfo.totle+len1; };

//这块下载完成,收尾

myfile.Close(); destFile.Close(); delete [] m_buf;

shutdown(m_socket,2);

if(re<=0) good[index]=TRUE; return 1; }

到这客户端的主要模块和机制已基本介绍完。希望好好体会一下这种多线程断点续传的方法。


点对点(P2P)多线程断点续传的实现(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2023年中国二三线城市房地产市场深度研究与行业竞争对手分

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: