这里是发送文件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;这里是接收文件  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
接到的文件内容为空,是我代码哪里有什么错误?
欢迎指正

解决方案 »

  1.   

    有的,我自己连接自己,调试都能看到事件是触发了的,但就是
    ReceiveLen:=Socket.ReceiveLength
    为0
      

  2.   

    发送时候的BUF我看了的,是很长一串乱码,估计就是文件的内容,接收的时候BUF内容就成了#0#0#0无限个
      

  3.   

    上面的问题我自己解决了,另外一个问题又出来了在接收过程中,当文件大于缓冲池的时候,我如何把接收的BUF拼成一个文件?