高手帮忙了,小弟急呀。我用vc 写了一个ftp断点续传的程序 下载rar压缩包时CRC错误,而其他文件正常 我用vc 写了一个ftp断点续传的程序,下载其他任何文件都正常,下载有些rar压缩包时也正常,但是有些就不行。出现的错误是:“CRC失败,文件被破坏”。不知道为啥。我在考虑是不是用recv(dataClient,buffer,len,0)接收数据时有问题了。因为我测试是在自己的电脑上进行的即:ftp地址是127.0.0.1。我在怀疑数据缓冲区的长度即buffer的长度是不是也有关系。高手帮忙了,小弟急呀。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很有可能是,我也试过,不同的缓冲区对不同的文件长度有效。但有一点是:出.txt格式的文件外,其他的必须是512的倍数。我现在怀疑着是不是和硬盘存储数据的住最小单位有关,因为一簇是512B.还请兄弟赐教解决方法 还有,下载rar和下载txt步骤是不一样的,你需要强制binary状态,这个做了吗? 我对下载做了监视,ftp文件长度和下载的字节树相等。还是会出现crc错误。但是有时侯不会,比如:当文件长度较短时不会出错。当一个压缩包压缩多个图片时,第一个能下载成功。另外,你说需要强制binary状态,我不知到是不是"TYPE I"。谢谢了 int pl = 8192; CString fp; fp = LocalFileName; char buffer[8192]; CString str = "RETR "+RemoteFileName+" \r\n"; memset(buffer,0,pl); DWORD cnt =0 ; int recLen ; send(commandClient,str,str.GetLength(),0); recLen = recv(commandClient,buffer,100,0); memset(buffer,0,pl); while(cnt < pl) { int recLen = recv(dataClient,buffer + cnt,pl-cnt,0); if(recLen > 0) { cnt += recLen; FilePos += recLen; WriteToFile(fp,FilePos,buffer,recLen); WriteInforToFile(FileSize,FilePos); } else if(recLen <= 0) return -1;//下载有误 } return 0;}着是下载函数的部分代码 MFC框架问题懂的朋友进来下! 一个进程启动过多的线程会不会有问题? 手写数字识别的问题 帮我看看,我的这个const该放在什么地方? 自己写的播放器,多次打开媒体文件后,可能崩溃掉! 关于类的继承 在MDI中,用事件响应后生成一个继承自FormView的有界面设置的子窗口?顶着有分。。。。分不够再开贴添加 vc 如何实现删除数据,添加已经实现!??? 怎样设置画线的粗细??? 关于VC语言下Excel打印预览已选定多sheet的问题 arp数据监控问题 CMSFlexGrid控件的单元格中如何加载图片
CString fp;
fp = LocalFileName;
char buffer[8192];
CString str = "RETR "+RemoteFileName+" \r\n";
memset(buffer,0,pl);
DWORD cnt =0 ;
int recLen ; send(commandClient,str,str.GetLength(),0);
recLen = recv(commandClient,buffer,100,0);
memset(buffer,0,pl);
while(cnt < pl)
{
int recLen = recv(dataClient,buffer + cnt,pl-cnt,0);
if(recLen > 0)
{
cnt += recLen;
FilePos += recLen;
WriteToFile(fp,FilePos,buffer,recLen);
WriteInforToFile(FileSize,FilePos);
}
else if(recLen <= 0)
return -1;//下载有误
}
return 0;
}
着是下载函数的部分代码