Einzelnen Beitrag anzeigen

Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#14
  Alt 29. Jan 2003, 18:16
Hi ihrs!
Ich hab das jetzt mal Interressehalber nachgemacht, und sitze da jetzt schon ca 3 stunden dran, so langsam.....
Naja, guckt euch das vielleicht mal an:

Server:

Code:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
     recbuffer:string;
     recstream:tfilestream;
begin
  recbuffer:=stringofchar(#00,socket.ReceiveLength);
  try
     socket.ReceiveBuf(recbuffer[1], length(recbuffer));
    recstream:=tfilestream.create('c:\test.exe', fmopenwrite);
    recstream.Write(recbuffer[1], length(recbuffer));
  finally
     freeandnil(recbuffer);
    freeandnil(recstream);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
serversocket1.Active:=true;
serversocket1.Open;
end;

end.

Client:

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  if opendialog1.Execute then
  begin
    edit2.Text:=form1.OpenDialog1.FileName;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
     meanfile : tfilestream;
     meanbuffer : string;
begin
  if (edit1.Text<>'') and (edit2.text<>'') then
  begin
    try
      clientsocket1.Address := edit1.Text;
    except
      showmessage('geben sie eine gültige IP-Addresse an!');
    end;
    clientsocket1.active:=true;
    meanfile:=tfilestream.create(edit2.text, fmopenread);
    meanbuffer:=stringofchar(#00, meanfile.size);
    try
      meanfile.read(meanbuffer[1], length(meanbuffer));
      clientsocket1.Open;
      if form1.ClientSocket1.socket.Sendbuf(meanbuffer, length(meanbuffer))<>-1 then
        showmessage('Datei erfolgreich verschickt');
    finally
      freeandnil(meanfile);
      clientsocket1.close;
      clientsocket1.Free;
    end;
  end;
end;

end.
Ich erhalte beim Schicken einer Datei beim Servertool einen error unbekannter Herkunft (10052) und einen "asyncronous socket error" aber ich habe eigentlich bei beiden Programmen den Port auf 22 gestellt.
*Helpneed*
Also danke schonmal für alle Antworten!
BB!
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat