Einzelnen Beitrag anzeigen

Karg

Registriert seit: 5. Jun 2007
36 Beiträge
 
#3

Re: Dateien senden und empfangen

  Alt 16. Nov 2007, 19:58
also, erstmal vielen dank für die schnelle hilfe.
Allerdings hab ich es immer noch nicht zum laufen gebracht und ich dreh bald durch.

hier mein neuer versuch:


client:
Delphi-Quellcode:
type
 TDownload = (fileverwaltung,download);
var filemode:TDownload;


procedure TForm9.download1Click(Sender: TObject);
begin
Dfile:=tfilestream.Create('c:\test.txt',fmcreate);
form1.file_server.Socket.Connections[0].SendText('<DOWNLOAD>' + Pfad); //hier wird der pfad an den server geschickt
end;


procedure TForm1.file_serverClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
case filemode of
//---- Streamgröße ermitteln-----
  fileverwaltung:begin
                   if pos('<FILEONWAY>',buf) <> 0 then
                   begin
                    DFile_size:=0;
                    Dfile_size:=strtoint(copy(buf,pos('<FILEONWAY>',buf)+11,999));
                    showmessage(inttostr(Dfile_size));
                    filemode:=download;
                   end;
              end;

 //---- streampakete empfangen und in stream schreiben-----
  Download: begin
              streamsize:=file_server.Socket.Connections[0].ReceiveLength;
             getmem(buffer,streamsize);
              try
               File_server.socket.Connections[0].ReceiveBuf(buffer^,streamsize);
               Dfile.WriteBuffer(buffer^,streamsize);
              finally
               freemem(buffer); end;
             if Dfile.size>=Dfile_size then Dfile.Free;
             end;
  end;

server:
Delphi-Quellcode:
procedure TForm1.file_clientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
//--------- DOWNLOAD FILE --------------
 if pos('<DOWNLOAD>',buf) <> 0 then
  begin
  Fchosen:=copy(buf,pos('<DOWNLOAD>',buf)+10,999); //Fchosen ist der vom client gesendete Pfad
  DFile:=Tfilestream.Create(fchosen,fmopenread);
  Dfile_size:=Dfile.size;
  file_client.Socket.SendText('<FILEONWAY>'+inttostr(Dfile_size));
  sleep(200);

  file_client.Socket.SendStream(Dfile);
  end;
end;
  Mit Zitat antworten Zitat