Dosya Transferi İle İlgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Mesaj gönderen s1lv3r »

derya yazdı:Ben kodunuzu denemedim, ama buffer'i pointer olarak kullanırsanız nasıl olur?
Ben Client-Server Socketle dosya göndermek için böyle bir kod kullandıyorum:

Kod: Tümünü seç

unit unit1;

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, ScktComp, StdCtrls; 

type 
  TForm1 = class(TForm) 
    ClientSocket1: TClientSocket; 
    ServerSocket1: TServerSocket; 
    btnTestSockets: TButton; 
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); 
    procedure FormCreate(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
    procedure ClientSocket1Disconnect(Sender: TObject; 
      Socket: TCustomWinSocket);
    procedure ClientSocket1Connect(Sender: TObject; 
      Socket: TCustomWinSocket); 
    procedure ServerSocket1ClientConnect(Sender: TObject; 
      Socket: TCustomWinSocket); 
    procedure btnTestSocketsClick(Sender: TObject);

  private 
    FStream: TFileStream; 
    { Private-Deklarationen } 
  public 
    { Public-Deklarationen }
  end; 

var
  Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.ClientSocket1Read(Sender: TObject; 
  Socket: TCustomWinSocket); 
var 
  iLen: Integer;
  Bfr: Pointer; 
begin 
  iLen := Socket.ReceiveLength; 
  GetMem(Bfr, iLen);
  try
    Socket.ReceiveBuf(Bfr^, iLen);
    FStream.Write(Bfr^, iLen);
  finally
    FreeMem(Bfr); 
  end; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  FStream := nil; 
end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  if Assigned(FStream) then 
  begin 
    FStream.Free; 
    FStream := nil; 
  end; 
end; 

procedure TForm1.ClientSocket1Disconnect(Sender: TObject; 
  Socket: TCustomWinSocket); 
begin 
  if Assigned(FStream) then 
  begin 
    FStream.Free; 
    FStream := nil; 
  end; 
end; 

procedure TForm1.ClientSocket1Connect(Sender: TObject; 
  Socket: TCustomWinSocket); 
begin
  FStream := TFileStream.Create('c:\gelen\dosya.ext', fmCreate or fmShareDenyWrite);
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket); 
begin
  Socket.SendStream(TFileStream.Create('F:\yolanınlan\dosya.ext', fmOpenRead or fmShareDenyWrite));
end;

procedure TForm1.btnTestSocketsClick(Sender: TObject);
begin
  ServerSocket1.Active := True;
  ClientSocket1.Active := True;
end; 

end.
Belki işinize yarar.
Bu kodu deniyorum c sürüsücüsün altında resim.jpg oluştu fakat 0 bayt yani sadece dosya oluşturuldu ama içerik yok :cry:
Cevapla