delphi开发用ClientSocket和ServerSocket做了一个下的系统,现在需要实现本地文件上传服务器和服务器文件下载到本机的功能,希望高手指点一二!!在此谢过!最好能给源码!!

解决方案 »

  1.   

    參考一下:http://download.csdn.net/source/1033761
      

  2.   

    http://i.cnsoftware.cn/space-dfwthread-id-3936435.html
      

  3.   


    Procedure TForm1.sendFile;
    var
    buf:array[0..200] of char;
    menory:TMemoryStream;
    SFileSize:integer;
    begin
    menory:=TMemoryStream.Create;
    menory.LoadFromStream('文件名');
    SFileSize:=GetFileSize('文件名');   //获取文件大小
    menory.Position:=i;//i是发送到第几个字节。可以声明一个全局变量来记录
    if SFileSize - i < 200 then
    bufsize:=SFileSize             //文件剩余字节小于200,bufsize等于剩余量
    else
    bufsize:=200;             //剩余字节大于200,bufsize等于200
    menory.Write(buf,bufsize);   //将内存数据写入buf,bufsize是写多少字节。
    ClientSocket1.socket.Sendbuf(buf,sizeof(buf));//发送封包,这buf就是文件的数据。
    end;function TForm1.GetFileSize(Const FileName:String):integer;
    var//获取文件的大小
      FileS:TFileStream;
    begin
      FileS:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone);    //声明一个FILE
      result:=Files.Size;
      Files.Free;
    end;这样只能一次发200个字节。如果没发完,需要服务器给出回应后,再继续发。