Bom dia pessoal!
Estou tentando fazer um programinha client de FTP e estou tendo alguns problemas, mas não com o java especificamente. Mais na partde do próprio protocolo FTP.
Consegui fazer a conexão com o servidor e enviar alguns comandos como USER, PASS, CWD, PWD…
Ao que diz respeito à visualização e transferência de arquivos (LIST, RETR) estou tendo dificuldades, pois o server me manda uma mensagem tipo “Openinmg data connection to /bin/ls” e eu não sei o que fazer. Após um tempo ele me manda uma msg de time out.
O que me disseram é que eu tenho que usar o comando PORT para dizer ao server em que porta eu quero receber a listagem dos dados (por exemplo).
Então fiz uma ServerSocket que escutava a porta 2222, e usei o comando PORT informando meu ip e essa porta.
mas mesmo assim não recebo nada.
Alguem conhece bem o protocolo FTP ou sabe onde eu posso encontrar essas informações?
então… mas o retorno do meu comando PORT está ok… eu num to sabendo o ke fazer depois disso…
e a documentação RFC eu ate li, mas teve algumas coisas ke eu nao entendi… justamente por isso eu vim pedir um help pra vcs.
[]s
TedLoprao
Tenta usar o modo passivo… pra ver se funciona…
Manda PASV + END_OF_LINE que ele te retornará um ip e uma porta onde vc deve se conectar… daí vc usa um socket normal…
Só te lembra que os comando vc envia por um socket, o outro só é usado para envio de dados…
Fallow
C
chambs
certo!!! era essa minha duvida! na verdade, vc acabou “adivinhando” minha duvida principal hehehe… pq eu num perguntei explicitamente isso…
então farei o seguinte:
envio o comando PASV, pego o ip e porta ke o server me mandar e abro uma nova socket através de um threadzinha só pra “escutar” pelo envio de dados, mas continuarei enviando comandos pela minha socket “principal”…
valeu mesmo!!!
[]s
C
chambs
cara, desculpe minha ignorancia… ma so ke eh isso aki oh:
eu testei isso e vi ke retornou certo… ma eu nunca tinha visto em java antes!!! tem como da uma explicada ai!?
[]s
TedLoprao
Bom, no primeiro caso que é port >> 8, ele está rolando oito bits para a direita. Dessa forma se a porta com 16 bits fosse o seguinte:
1010010010110111
Com essa instrução passaria a ser:
0000000010100100
No outro código port & 0x00FF ele está fazendo um and de bits ocorrendo o seguinte:
1010010010110111
Com essa instrução passaria a ser:
0000000010110111
Isso deve ser feito pois o comando espera pela porta dividida em dois conjuntos de 8 bits…
Conseguiu fazer funcionar???
Fallow
C
chambs
grande, consegui!
muito obrigado MESMO!!!
era isso mesmo… tem ke dar um comando PASV pro server me dizer ke porta ele ker ke eu receba dados… e ja era…
agora eu tenho ke fazer o trabalho direito… pq eu fiz tudo numa classe soh hauahUAhUAh pra testar… agora vou PROGRAMAR EM JAVA MESMO.
isso foi mais um teste pra entender o tal protocolo FTP.
agora blz…
valeu a todos ke ajudaram ai!!!
[´]s!
R
rlicciardo
Estou com o mesmo problema aqui, mas a pergunta é a seguinte: eu mando o PASV e tenho o ip e a porta (ip,ip,ip,ip,port,port).
Em seguida eu uso o comando PORT, configuro o socket com essa porta e mando os comandos pela 21 e recebo os dados por ela. Essa é a sequencia?
R
rlicciardo
Melhor dizendo, quando eu tenho sucesso usando PORT eu preciso usar PASV tbm?