Einzelnen Beitrag anzeigen

sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: WinSock & Dateien versenden

  Alt 6. Okt 2007, 17:46
Du öffnest eine beliebige Datei untypisiert und liest immer z.B. 2048 Bytes
und sendest diese an den Server bis du ans Ende der Datei angelangt bist.

Delphi-Quellcode:
//Server:
[....]
type TDLFile: array[0..2048-1] of Byte;
[....]
var datei: file;
    buffer: TDLFile;
    iResult: Integer;
begin
  AssignFile(datei, 'C:\bild.bmp');
  ReSet(datei, 1);
  while not eof(datei) do
  begin
    BlockRead(datei, buffer, 2048, iResult);
    Socket.SendBuf(buffer, iResult);
  end;
  CloseFile(datei);
end;
[....]

//Client:
[...]
type TDLFile: array[0..2048-1] of Byte;
var dlCounter: Cardinal = 0;
[....]
procedure WriteToNewFile(bByteDat: TDLFile; iSize: Integer);
var
  hDat: File;
begin
  if FileExists('C:\new_bild.bmp') then
  begin
    AssignFile(hDat, 'C:\new_bild.bmp');
    ReSet(hDat, 1);
    Seek(hDat, soFromBeginning+dlCounter);
    BlockWrite(hDat, bByteDat, iSize);
    inc(dlCounter, iSize);
    CloseFile(hDat);
  end
  else begin
    AssignFile(hDat, 'C:\new_bild.bmp');
    ReWrite(hDat, 1);
    BlockWrite(hDat, bByteDat, iSize);
    dlCounter := iSize;
    CloseFile(hDat);
  end;
end;
[....]
var
  buffer: TDLFile;
  iResult: Integer;
begin
  Socket.RecieveBuf(buffer, Socket.RecieveLength);
  WriteToNewFile(buffer, Socket.RecieveLength);
end;
[....]
Du musst den Code anpassen und eventuell Fehler ausbessern.

MfG: sk0r
  Mit Zitat antworten Zitat