Einzelnen Beitrag anzeigen

Hari

Registriert seit: 31. Mai 2004
Ort: Wien
22 Beiträge
 
#5

Re: screenshot (bild) vom server zum clienten senden?

  Alt 9. Jun 2004, 02:35
ich habs geschaft!!! jetzt kann ich entlich auch vom client zum server senden ohne das nur 8,00kb ankommen, und zwar so:

DER SERVER
Code:
 unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    Label1: TLabel;
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
    FStream: TFileStream;
implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
   FStream := TFileStream.Create('C:\temp\screenshothari.bmp', fmOpenRead);
Socket.SendStream(FStream);
end;

end.
DER CLIENT

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Label1: TLabel;
    Button1: TButton;
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
   FStream: TFileStream;
  SizeOfFile: Integer;
  pBuffer: Pointer;
   AlreadyReceived: integer;
     FileStream: TFileStream;
     Buffer: array[0..4096] of Byte; // die Größe des Puffers ist beliebig, müsste nur (s.u.)
 SizeOfBuffer: integer;

implementation

{$R *.dfm}

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var

 Buffer: array[0..4096] of Byte; // die Größe des Puffers ist beliebig, müsste nur (s.u.)
 SizeOfBuffer: integer;

  begin
 pBuffer := @Buffer;
  SizeOfBuffer := Socket.ReceiveBuf(pBuffer^, 4096); //hier angeglichen werden
  FileStream.Write(pBuffer^, SizeOfBuffer);
  Inc(AlreadyReceived, SizeOfBuffer);
  Socket.SendText(IntToStr(AlreadyReceived));

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=false;
filestream.Free;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
    FileStream := TFileStream.Create('c:\temp\datei2.bmp', fmCreate or fmOpenWrite);
end;

end.

mfg. hari
  Mit Zitat antworten Zitat