Envio de Varios Arquivos via Socket Delphi

25/05/2015

0

bom noite estou com uma aplicaçao de envio de arquivos via socket funcionando normal so tenho duas duvidas.

1 - como posso enviar o nome e extencao do Arquivo?
2- como faço para enviar varios arquivos sendo que o programa gerencie e envie um de cada vez?

Cliente

    ArqTmp.Clear;
     ArqTmp.LoadFromFile(ListaArquivo.Lines[0]);
     Tamanho := ArqTmp.Size;
     ClientSocket1.Socket.SendBuf(Tamanho,SizeOf(Int64));
     ClientSocket1.Socket.SendBuf(ArqTmp.Memory^,ArqTmp.Size);
     ListaArquivo.Lines.Delete(0);
     MLog.Lines.Add('Arquivo Enviado...');



Servidor

var
    TamBuffer : integer;
    Paux : pointer;
begin

if not RecebendoArquivo then
   Begin
     Socket.ReceiveBuf(TamanhoArquivo,sizeof(Int64));
     RecebendoArquivo := True;
     if Arquivo = nil then
      Arquivo := TMemoryStream.Create;
     MLog.Lines.Add('Recebendo Arquivo...');
   end
  else
   Begin
     TamBuffer := Socket.ReceiveLength;
     GetMem(PAux,TamBuffer);
     Socket.ReceiveBuf(PAux^,TamBuffer);
     Arquivo.Write(PAux^,TamBuffer);
     Dispose(PAux);
     if TamanhoArquivo = Arquivo.Size then
      Begin
        RecebendoArquivo := False;

        MLog.Lines.Add('Transferencia do Arquivo completa...');
        if SaveDialog1.Execute then
        Arquivo.SaveToFile(SaveDialog1.FileName);
        Arquivo.Free;
        Arquivo := Nil;
    end;
Daniel Thomaz

Daniel Thomaz

Responder

Posts

06/12/2019

Adriano Pratti

bom noite estou com uma aplicaçao de envio de arquivos via socket funcionando normal so tenho duas duvidas.

1 - como posso enviar o nome e extencao do Arquivo?
2- como faço para enviar varios arquivos sendo que o programa gerencie e envie um de cada vez?

Cliente

    ArqTmp.Clear;
     ArqTmp.LoadFromFile(ListaArquivo.Lines[0]);
     Tamanho := ArqTmp.Size;
     ClientSocket1.Socket.SendBuf(Tamanho,SizeOf(Int64));
     ClientSocket1.Socket.SendBuf(ArqTmp.Memory^,ArqTmp.Size);
     ListaArquivo.Lines.Delete(0);
     MLog.Lines.Add('Arquivo Enviado...');



Servidor

var
    TamBuffer : integer;
    Paux : pointer;
begin

if not RecebendoArquivo then
   Begin
     Socket.ReceiveBuf(TamanhoArquivo,sizeof(Int64));
     RecebendoArquivo := True;
     if Arquivo = nil then
      Arquivo := TMemoryStream.Create;
     MLog.Lines.Add('Recebendo Arquivo...');
   end
  else
   Begin
     TamBuffer := Socket.ReceiveLength;
     GetMem(PAux,TamBuffer);
     Socket.ReceiveBuf(PAux^,TamBuffer);
     Arquivo.Write(PAux^,TamBuffer);
     Dispose(PAux);
     if TamanhoArquivo = Arquivo.Size then
      Begin
        RecebendoArquivo := False;

        MLog.Lines.Add('Transferencia do Arquivo completa...');
        if SaveDialog1.Execute then
        Arquivo.SaveToFile(SaveDialog1.FileName);
        Arquivo.Free;
        Arquivo := Nil;
    end;


Boa tarde - Tem como eu pegar o nome do Arquivo que estou recebendo pra trabalhar ele sem precisar abrir um SaveDialog para isso sem saber o nome que o remetente me mandou na rede?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar