一个关于同步的问题(50分)

  • 主题发起人 主题发起人 cpmax
  • 开始时间 开始时间
C

cpmax

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在服务端将一个大文件分割成指定大小的文件块,发送到客户端
在客户端边接收边重组合啊,
重点是边接收边合并
 
定义
FReceiveBuf: PChar; //接收数据缓存指针
FReceiveSize: integer; //接收数据缓存的大小
FReceiveCount: integer; //接收到的数据字节计数(总共接收多少数据)
初始化:
FReceiveCount := 0;
FReceiveSize := 1024 * 16; // 16KB 的字节
if not Assigned(FReceiveBuf) then
GetMem(FReceiveBuf, FReceiveSize);
释放:
if Assigned(FReceiveBuf) then
begin
FreeMem(FReceiveBuf, FReceiveSize);
FReceiveBuf := nil;
end;
在 OnRead 事件:
NewLen := FReceiveCount + FClientSocket.ReceiveLength;
if NewLen >= FReceiveSize then
begin
if NewLen < (FReceiveSize + (1024 * 16)) then //按照 16 KB 字节递增分配字节
NewLen := FReceiveSize + (1024 * 16);
ReallocMem(FReceiveBuf, NewLen);
FReceiveSize := NewLen;
end;
Len := FClientSocket.ReceiveBuf(FReceiveBuf[FReceiveCount],
FReceiveSize - FReceiveCount - 1);
...相关判断数据边界或者其他处理方式。

 
后退
顶部