GARANTIR DESCONTO

Fórum Transferencia arquivos com Indy #277770

18/04/2005

0

Estou levando uma zoada de pau , do IdTCPServer e IdTCPClient pois
nao consigo fazer transferencia de arquivos entre os dois componentes.
Enviar arquivos TXT do Client para Server e vice-versa.
Alguem tem algum exemplo de como faço isso !

gracias


Craudio

Craudio

Responder

Posts

18/04/2005

Massuda

O processo de transferência dos arquivos seria sempre iniciado pelo cliente? Como tem várias formas de fazer isso, você poderia postar o código que você está usando tanto no cliente como no servidor?


Responder

Gostei + 0

18/04/2005

Craudio

Abaixo segue o codigo qdo usava os componentes FastNet.
O processo eh o seguinte :
Tenho um sistema de frete q usa sincronizacao de base de dados(mas nao uso replicacao do banco). tenho triggers nas tabelas e qdo a tabela sofre alteracao (I,U,D) a trigger gera um registro dessa tabela, pra uma tabela onde ficam os logs. o sistema gera um TXT dessa tabela e envia pra matriz . Essa por sua vez faz a verificacao de codigos recebidos(pra evitar registros duplicados) e retorna um txt para as filiais com os novos codigos. Entao ha uma troca de arquivos de texto de maneira q ambas as bases de dados fiquem iguais. E como estou trocando os componentes FASTNET pelos componentes INDY. Travei ae !


procedure TFAtualizarMatrizFilial.EnviaArquivo(Destino: Char);
var
MStream: TMemoryStream;
ListaArquivos: TStringList;
begin
{Copia o Arquivo para o Destino}
if Destino=´M´ then
NMStrm.Host := EComputadorDestino.Text
else
NMStrm.Host:=HostNameFilial;
MStream := TMemoryStream.Create;
ListaArquivos :=TStringList.Create;
try
MostraMensagem(´Compactando arquivo de remessa...´);
ProgressBar.Position:=0;
ProgressBar.Max:=0;
ListaArquivos.Add(DMG1.SysInfo.WinTempPath+´\dados.Rem´);
BackupFile.BackupToStream(ListaArquivos,MStream);
if Destino=´M´ then
begin
MostraMensagem(´Enviando dados para matriz...´);
end
else
begin
MostraMensagem(´Enviando dados para filial...´);
end;

{Envia mensagem para computador destino acompanhar a transferencia}
if DMG1.TBConfiguracoesSistemaInd_Matriz_Filial.AsString=´M´ then
NMMsg.Host:=HostNameFilial
else
NMMsg.Host:=EComputadorDestino.Text;
NMStrm.FromName := IPInternet;
if Destino=´M´ then
NMMsg.PostIt(´M´+´Recebendo dados da filial...´)
else
NMMsg.PostIt(´M´+´Recebendo dados da matriz...´);

NMStrm.PostIt(MStream); {Envia o arquivo}
finally
MStream.Free;
ListaArquivos.Free;
end;
MostraMensagem(´Dados enviados com sucesso!´);
MostraMensagem(´Aguardando retorno...´);
ProgressBar.Position:=0;
end;


Responder

Gostei + 0

18/04/2005

Craudio

Alguem pode me ajudar ?


Responder

Gostei + 0

19/04/2005

Massuda

Abaixo segue o codigo qdo usava os componentes FastNet....
Não existe nenhum componente do Indy que possa ser usado no lugar dos componentes que você utilizou e eu não tenho de imediato um exemplo simples de transferência de arquivos.

O exemplo mais simples que me lembro está no demo do Indy 9, que você pode baixar [url=http://www.indyproject.org/Demos/index.iwp]desta página[/url] do site deles. Dê uma estudada no demo ImageServer.


Responder

Gostei + 0

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

Aceitar