真是奇怪,为何下载后的ZIP文件打开提示错误?(100分)

  • 主题发起人 主题发起人 dingsheng_ok
  • 开始时间 开始时间
D

dingsheng_ok

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个局域网传输程序,客户端可以将文件传输至服务器,也可以将服务器上的文件下载到本地机,我采用的是SOCKET技术,上传文件和下载文件原理都一样,将待传压缩文件转换成二进制文件,逐个分块进行传输。当客户机和服务器都在同一机上时,测试传输和下载均成功。若客户机和服务器不再同一台机上时,客户机可以将文件传输到服务器成功,但是从服务器下载ZIP文件到客户机上时,打开ZIP文件出错:不可预料的ZIP格式档案文件末端或者提示多卷或错误的ZIP格式档案文件。我就不明白,为什么客户机和服务器在同一台机上下载的ZIP文件可以打开,而不在同一台机上时打开ZIP文件出错,而且下载后的文件大小是一样的,没有少下载一个字节啊。部分代码
服务端下载:
a.Position:=0;
nsize:=a.size; //a是待下载的文件名
repeat //循环发送数据块
if nsize>4096 then
nsize:=4096;
a.ReadBuffer(buffer^,nsize); //读数据到缓冲区
strm.Write(buffer^,nsize); //发送
nsize:=a.Size-a.Position;
until (nsize=0);

form1.Memo1.Lines.Add(timetostr(now)+'发送完毕');
freemem(buffer);
客户端接收:
fs:=tfilestream.Create(form1.Label3.Caption+'/'+form1.treeview1.selected.text+'.zip',fmcreate);//创建文件流

repeat
n:=nsize-fs.Position;
if (n>4096)
then n:=4096;
n:=strm.Read(buffer^,n);
fs.WriteBuffer(buffer^,n);
until (fs.Position=nsize);
 
会不会是传输不完全所至
 
但是客户机和服务器都在同一台服务器上却可以啊,为何不在同一机上就传输不完整了,再说我检查了传输后的文件大小,没有变化的啊,真的很急啊,困扰我好长时间了,大家能不能多提示啊
 
可能有两种原因:
1、文件不完整了;
2、客户机WINRAR的版本太低,且与服务器中的版本不一致。
 
那你传个TXT文件,比较一下内容就知道是不是传输不完整拉。
 
to 荷塘新月
1我把客户机下载后的文件拷贝到服务器端,也出现同样的错误提示:不正确的文件末尾
2为何文件下载后不完整了?上传到服务器却可以阿
真是急死人?
 
后退
顶部