关于把文件写入到流中传送的有关问题

关于把文件写入到流中传送的问题
这里是发送文件
Delphi(Pascal) code

var
  Buf:array[0..BufSize-1] of Char;
  Sendsize:longint;
begin
  OpenDialog1.Execute;
  if OpenDialog1.FileName='' then exit;    

  FS:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
  FS.Seek(0,soFromBeginning);{移动指针到流的起始位置}

  if FS.Size<>0 then 
  begin
    LeftSize:=FS.Size; 
    while True do
    begin
      if LeftSize=0 then 
      begin
        Break;
      end
      else
      begin
        if LeftSize<BufSize then 
        begin
          SendSize:=LeftSize; 
        end
        else
        begin
          Sendsize:=BufSize;
        end;
        FS.ReadBuffer(Buf,SendSize);
        ClientSocket1.Socket.SendBuf(Buf,SendSize);
        LeftSize:=LeftSize-SendSize;
        Sleep(10);
      end;
    end;
  end;
  FS.Free;
end;


这里是接收文件
Delphi(Pascal) code

  ReceiveLen:=Socket.ReceiveLength; //这里居然等于0,是怎么回事

  {接收文件}
  SaveDialog1.Execute;
  if SaveDialog1.FileName='' then exit;

  FS:=TFileStream.Create(SaveDialog1.FileName,fmCreate);
  FS.Seek(0,soFromBeginning);{移动指针到流的起始位置}
  Socket.ReceiveBuf(Buf,bufsize);
  FS.Write(Buf,ReceiveLen);
  FS.free;



bufsize是一个常量,4096
接到的文件内容为空,是我代码哪里有什么错误?
欢迎指正

------解决方案--------------------
把代码发给我看一下,或许能找到问题。发站内短信,然后用QQ
------解决方案--------------------
说出来解决的方法,我也先知道