Delphi-Über socket datein versenden

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Yoda007, 26. November 2005 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 26. November 2005
    Hi,
    also wie schon gesagt kann mir einer erklären wie ich mit Delphi mit sockets Dateien versenden kann, weil immer irgendwelche langweiligen Strings zu verschicken is langweilig, wär nett wenn mir einer helfen könnte.
     

  2. Anzeige
  3. #2 26. November 2005
    Code:
    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; // Länge des Streams
     Bfr: Pointer; // Puffer
    begin
     iLen := Socket.ReceiveLength; //empfange Länge
     GetMem(Bfr, iLen); // Puffer mit der Größe wird reserviert
     try
     Socket.ReceiveBuf(Bfr^, iLen); //empfange Puffer
     FStream.Write(Bfr^, iLen); 
     finally
     FreeMem(Bfr); // reservierter Puffer wird wieder geleert
     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:\temp\test.stream.html', fmCreate or fmShareDenyWrite); // FileStream wird erstellt (auf dem Client)
    end;
    
    procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
     Socket: TCustomWinSocket);
    begin
     Socket.SendStream(TFileStream.Create('c:\temp\test.html', fmOpenRead or fmShareDenyWrite)); //Stream wird gesendet XD
    end;
    
    procedure TForm1.btnTestSocketsClick(Sender: TObject);
    begin
     ServerSocket1.Active := True;
     ClientSocket1.Active := True;
    end;
    
    end.
    

    Im Grunde genommen erklärt sich alles von selbst. Du erstellst einen Stream und schickst den von socket zu socket.
    HF damit...
     

  4. Videos zum Thema
Die Seite wird geladen...