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
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
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.