Registriert seit: 5. Jun 2007
36 Beiträge
|
Re: Dateien senden und empfangen
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;
|
|
Zitat
|