Fórum receber arquivos. #330567
03/10/2006
0
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
Curtir tópico
+ 0Posts
03/10/2006
Massuda
Gostei + 0
03/10/2006
Zumbi
via socket.. soh que o servidor não foi minha aplicação que desenvolveu..
eu teria que fazer um client para receber esse arquivo..
Gostei + 0
03/10/2006
Massuda
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.
Gostei + 0
03/10/2006
Zumbi
eu precisaria de uma rotina de envio e recebimento de arquivos via socket, eu estou tentando fazer com o idtpcclient.
Gostei + 0
05/10/2006
Zumbi
Gostei + 0
05/10/2006
Massuda
* 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; ...
Gostei + 0
06/10/2006
Zumbi
Gostei + 0
06/10/2006
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)