哪里有通过网络点对点发送文件的源码下载,急急急急急急

解决方案 »

  1.   

    我刚做了个传输图像的,给你代码,传文件类似,都用了内存流:1。客户端
    procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    var MyBuffer: array[0..10000] of byte;
    MyRl: integer;
    S: string;
    MyBmp: TBitmap;
    MyJpg: TJpegimage;
    begin
    if mysize=0 then
     begin
      s:=socket.ReceiveText;
      mysize:=strtoint(s);
      socket.SendText('ready');
     end
     else
     begin
      myrl:=socket.ReceiveLength;
      socket.ReceiveBuf(mybuffer,myrl);
      mystream.Write(mybuffer,myrl);
      if mystream.Size>=mysize then
       begin
        mystream.Position:=0;
        mybmp:=tbitmap.Create;
        myjpg:=tjpegimage.Create;
        try
        myjpg.LoadFromStream(mystream);
        mybmp.Assign(myjpg);
        image1.Picture.Assign(mybmp);
        finally
        myjpg.Free;
        mybmp.Free;
        mystream.Clear;
        mysize:=0;
        end;
       end; end;end;
    2。服务器端procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var rs,ldx:string;
    myjpg:tjpegimage;
    mysc:tbitmap;begin
     rs:=socket.ReceiveText;
     if rs='willget' then
      begin
       try
       mysc:=tbitmap.Create;
       mystream:=TMemorystream.Create;
       self.getscreen(mysc);
       myjpg:=tjpegimage.create;
       myjpg.Assign(mysc);
       myjpg.CompressionQuality:=20;
       //myjpg.Compress;
       myjpg.SaveToStream(mystream);
       //myjpg.SaveToFile('c:\mypic.jpg');
       myjpg.Free;
       mystream.Position:=0;
       mysc.Free;
       ldx:=inttostr(mystream.Size);
       socket.SendText(ldx);
       except
       end;  end;
      if rs='ready' then
      begin
        try
       mystream.Position:=0;
       socket.SendStream(mystream);
        except
        end;
      end;
    end;