hi @ all,
ich will über server und clientsocket eine datei senden bzw. empangen.
Jedoch funktioniert es nicht und ich komm nicht auf den fehler.
Hier mal der code:
Server sendet stream:
Delphi-Quellcode:
//--------- DOWNLOAD FILE --------------
if pos('<DOWNLOAD>',buf) <> 0 then
begin
DFile:=Tfilestream.Create(Fchosen,fmopenread); //Fchosen ist der pfad zur datei
Dfile.Position:=0;
DFile_size:= DFile.size; // var DFILE_size: int64;
file_client.Socket.SendBuf(DFile_size,sizeof(int64));
file_client.Socket.SendStream(Dfile);
Dfile.Free;
end;
Client empfängt:
Delphi-Quellcode:
DFile:=Tfilestream.Create('c:\test.exe',fmcreate or fmopenwrite);
//---- Streamgröße ermitteln-----
if socket.ReceiveLength <= sizeof(int64) then
begin
socket.ReceiveBuf(DFILE_SIZE,sizeof(DFILE_size)); // var DFILE_SIZE:int64;
end;
//---- Stream empfangen-----
if Socket.ReceiveLength>sizeof(int64) then
begin
streamsize:=socket.ReceiveLength;
getmem(buffer,streamsize);
try
socket.ReceiveBuf(buffer^,streamsize);
Dfile.WriteBuffer(buffer^,streamsize);
finally
freemem(buffer); end;
if Dfile.size>=Dfile_size then Dfile.Free;
end;