文件分块传输的校验问题!(200分)

L

laline

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个文件分块多次传输,由客户端发起请求,但是不知道服务端怎么校验每个
文件块的准确性,难道只是靠每个块的大小吗?如果用采集数据做某种算法校验
(比如MAC校验)的话又怕系统开销太大导致速度上的损失,不知道象
cutftp和netants之类的软件是怎么做的,是不是有什么大家公认有效且快速的校验
方式!
 
其实cutftp和netants之类的软件都没有进行自生的数据验证,因为基于tcp/ip协议的数据
传输本来就有安全机制,有其自身的数据校验方法以次来确保数据的完整性,所以根本没
有必要自己再进行检验了。
 
你太小看TCP/IP了!只要用它还管什么校验?只要数据带到了对方手里就是正确的,除非没有传送到!
 
传送记录!
type
_filerec=record
blockno:word;
filesize:longint;
end;

const
_blocksize = 2048;
var
_frec:_filerec;
blockno:word;
lastbyte:word;
procedure sendfile;
begin
blockno:=filesize() div _blocksize;
lastbyte:=filesize()-blockno*_blocksize;
//先把该记录发送,然后
_frec.blockno:=blockno;
if lastbyte>0 then
inc(_frec.blockno);
send(_frec,sizeof(_frec));
//发送数据
for tmct:=1 to blocknodo
begin
send(某块,_blocksize);
end;

if (lastbyte>0) then
send(最后一块,lastbyte);
end;
 
如果真想校验,可以用CRC,或者md5.
crc: http://www.delphibbs.com/delphibbs/dispq.asp?lid=1754418
md5: http://www.delphibbs.com/delphibbs/dispq.asp?lid=1733257
 
多人接受答案了。
 
顶部