Autor Beitrag
ObscurusNox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 49



BeitragVerfasst: Di 08.07.03 00:29 
Hallo!

Habe mir schon sämtliche Posts zu diesem Thema angesehen (zumindest alle die ich finden konnte), aber leider komme ich mit meinem Problem trotzdem nicht weiter.

Hab diese beiden Programme:

Client
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ClientSocket1: TClientSocket;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Stream: TFileStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Datei : File of Byte;
begin
  Stream := TFileStream.Create( 'lala.bmp', fmOpenRead );
  ClientSocket1.Socket.SendStream( Stream );
end;

end.


Server
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  FStream: TFileStream;
  SizeOfFile: Integer;
  pBuffer: Pointer;
begin
  FStream := TFileStream.Create( 'lala2.bmp', fmOpenReadWrite );
  SizeOfFile := Socket.ReceiveLength;
  GetMem(pBuffer, SizeOfFile);
  try
    Socket.ReceiveBuf(pBuffer^, SizeOfFile);
    FStream.Seek( 0, soFromEnd );
    FStream.Write(pBuffer^, SizeOfFile);
  finally
    FreeMem(pBuffer);
    FStream.Free;
  end;
end;

end.


Wenn ich damit eine größere Datei verschicke (Beispiel 6MB) komme so um die 250kB zuviel an. Kann mir da wer helfen???
Ich hab den Fehler immer in meinem Netzwerktool gesucht, das auch mal funktioniert hat. Hab damit Tonnenweise Files übers Netzwerk gestreamt, aber auf einmal ging's nicht mehr. Hat gedauert bis ich auf die Idee gekommen bin das nochmal so billig wie möglich zu versuchen, aber es geht nicht mal so.

Könnte das vielleicht an meinem Firewall liegen? Der sagt immer so komische Sachen, wenn ich ein Delphi-Programm mit Sockets ausführe: MsgDigestComputeMD5: Unable to open 'Dateiname der entsprechenden EXE'???
Vielen Dank für eure Mühe.

Markus.