Fórum receber arquivos. #330567

03/10/2006

0

ola pessoal..
tenho o seguinte problema..

eu preciso receber um arquivo que enviado para uma porta especifica do meu servidor.

soh que eu não sei como é enviado esse arquivo para mim, só sei que ele vem para uma porta do meu servidor.

alguém saberia como eu poderia pegar esse arquivo?


Zumbi

Zumbi

Responder

Posts

03/10/2006

Massuda

...soh que eu não sei como é enviado esse arquivo para mim...
Não tem como receber o arquivo sem saber ´como é enviado´; procure se informar sobre qual protocolo é utilizado.


Responder

Gostei + 0

03/10/2006

Zumbi

será envia via protocolo tcp a porta 2424..

via socket.. soh que o servidor não foi minha aplicação que desenvolveu..

eu teria que fazer um client para receber esse arquivo..


Responder

Gostei + 0

03/10/2006

Massuda

Precisa de mais detalhes para desenvolver o client. Peça informações sobre o protocolo de transferencia de dados/arquivos a quem desenvolveu o servidor.

De modo bem simplificado... TCP simplesmente define como pacotes de dados são trocados entre máquinas, mas não se precupa com o conteúdo dos pacotes; o protocolo define como tratar o conteúdo dos pacotes.


Responder

Gostei + 0

03/10/2006

Zumbi

pelo que eles me informaram, seria feito uma conexão via socket, ai eu teria que enviar um arquivo txt, e eles me retornam um arquivo txt. basicamente seria isso.

eu precisaria de uma rotina de envio e recebimento de arquivos via socket, eu estou tentando fazer com o idtpcclient.


Responder

Gostei + 0

05/10/2006

Zumbi

Alguém teria uma função de envio e recebimento de arquivos com o TIdTCPServer e TIdTCPClient?


Responder

Gostei + 0

05/10/2006

Massuda

Verifique com quem fez o servidor se a transferencia funciona assim:

* abre a conexão
* manda o arquivo
* recebe o arquivo
* fecha a conexão

Se for assim, é possível fazer com Indy.

Porque ´possível´? Indy se baseia na idéia de que quando você recebe dados, você tem idéia do tamanho dos dados ou sabe que os dados possuem alguma indicação de fim (normalmente CR/LF, mas pode ser também o fim da conexão); poderia usar algum tipo de timeout para controlar o fim da recepção, mas como se trata de um WAN, os tempos envolvidos são imprevisíveis.

Assumindo que funcione do jeito que escrevi no início...
var
  Stream: TFileStream;
...
  // falta tratamento de erros!

  Stream := TFileStream.Create(´c:\pasta\do\arquivo.de.dados´,
    fmOpenRead);

  IdTCPClient1.Host := ´ip.ou.nome.do.servidor´;
  IdTCPClient1.Port := porta.do.servidor;

  IdTCPClient1.Connect;

  IdTCPClient1.WriteStream(Stream);

  Stream.Free;

  Stream := TFileStream.Create(´c:\pasta\do\arquivo.de.resposta´,
    fmCreate);

  // vai ler até ser desconectado
  IdTCPClient1.ReadStream(Stream, -1, True);

  Stream.Free;
...
Não sei se esse código vai funcionar, os detalhes que você passou não permitem fazer mais que isso. Dependendo do funcionamento real da sua transferencia de dados, pode ser que o Indy não seja a melhor ferramenta a ser utilizada.


Responder

Gostei + 0

06/10/2006

Zumbi

tem como colocar um tipo de timer para ficar verificando se o servidor está enviando um arquivo para o client? e como ficaria tem como postar um exemplo?


Responder

Gostei + 0

06/10/2006

Massuda

tem como colocar um tipo de timer para ficar verificando se o servidor está enviando um arquivo para o client?
Porque isso seria necessário? Eu havia entendido que você ´teria que enviar um arquivo txt, e eles me retornam um arquivo txt´; logo, você só recebe um arquivo depois de enviar um arquivo.


Responder

Gostei + 0

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

Aceitar