将收到的数据存在一个内存流中,将该流存为文件即可.(大至是这样,随手写的) var Form1: TForm1; Mrar:TMemoryStream; implementation{$R *.dfm}procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); begin if Mrar.Write(Buffer^,bufferlength)<=10 then begin Mrar.SaveToFile('c:\a.rar'); mrar.Free; end; end;
var
Form1: TForm1;
Mrar:TMemoryStream;
implementation{$R *.dfm}procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
begin
if Mrar.Write(Buffer^,bufferlength)<=10 then
begin
Mrar.SaveToFile('c:\a.rar');
mrar.Free;
end;
end;
比如,开始先传文件的名称、大小、结束符、数据包校验和等,发送接收每一帧数据包时,判断校验和是否正确,如不正确,则请求发送方继续发送同一包数据。然后,根据文件的大小或结束符判断是否接收完毕。