高手给我能给我“用socket在两台机子间传文件的代码,不是传字符串”客户端和服务器端的都要,把主要的代码给我。谢谢了
通过编译后给分,只能这样了,还请大家谅解

解决方案 »

  1.   

    你用filestream把文件读到流里,然后将此流发送到请求端,再保存为文件,即可实现。文件流如何使用,请看看帮助吧。
      

  2.   

    http://www.vckbase.com/document/viewdoc.asp?id=448给你这篇文章 上面有完整代码应该对你有用
      

  3.   

    谢谢你的提示。
    问题是这样的:在单步调试的过程中,发现可以正确传送,目标文件为689kb ,可继续跟踪下去,它的大小又变为o了,为什么?
     发送端:
    strfile:=edit2.Text;
    ClientSocket1.Socket.SendStream(tfilestream.Create(strfile,fmopenread));
     接收端:
    procedure TRcvData.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      stream:tfilestream;
      nrecved:integer;
    begin
      stream:=tfilestream.Create('e:\minedb.mdb',fmCreate);
      try
        while true do
          begin
            nrecved:=socket.ReceiveBuf(buffer,sizeof(buffer));
            if nrecved<=0 then  break
            else
             stream.Write(buffer,nrecved);
          end;
    procedure TRcvData.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      stream:tfilestream;
      strln:string;
      nrecved:integer;
    begin
      stream:=tfilestream.Create('e:\minedb.mdb',fmCreate);
      try
        while true do
          begin
            nrecved:=socket.ReceiveBuf(buffer,sizeof(buffer));
            if nrecved<=0 then  break
            else
             stream.Write(buffer,nrecved);
          end;
       finally
        stream.Free;
       end;
    end;
    大小又变为o了,为什么?
      

  4.   

    好像是Delphi调试器有点问题,但是实际发送出去的东西确实又是你需要发送的大小,但是显示出来的是0