2010-07-06 4 views
1

Je reçois erreur dans le code ftp java.Problème dans le code ftp java

SimpleFTP n'a pas pu demander le mode passif. J'ai copié ce code à partir du réseau. mais il ne fonctionne pas

sendLine("PASV"); 
    String response = readLine(); 
    System.out.println(response); 
    System.out.println(response); 
    if (!response.startsWith("227")) { 
     throw new IOException("SimpleFTP could not request passive mode: " + response); 
    } 
+0

Quelle est l'erreur? Vous n'avez donné aucune information? – Prav

+0

Cela pourrait être la source complète: http://www.silversurferslab.com/blogs/1/java-simple-ftp-client-class-26.html –

+0

il montre "SimpleFTP ne pouvait pas demander le mode passif" –

Répondre

1

On dirait que vous êtes en mesure de se connecter au serveur ftp - sinon vous aviez reçu IOExceptions ou NullPointerExceptions beaucoup plus tôt.

Le problème est que vous ne pouvez pas établir de connexion en mode passif. Si le serveur est un produit standard, alors je suppose qu'il répondrait correctement avec un message 227.

Si je devais debug, je commence par ce qui suit:

  1. utiliser un client FTP basé shell normal et essayer d'entrer dans le mode passif manuellement. Peut-être que vous obtenez une réponse différente, peut-être que le serveur envoie juste une ligne vide avant que le vrai message
  2. utilise un sniffer réseau comme wireshark pour surveiller le trafic.
  3. essayez de vous connecter à un serveur ftp différent
  4. paramètres de pare-feu de contrôle - ceux-ci peuvent bloquer le mode passif, car il utilise des ports différents
+0

ok. merci Andreas .. Je vais essayer de vous dire .. –

+0

je l'ai eu Andreas .. En fait, le problème est dans mon serveur comme vous l'avez dit. Mais dans mon serveur client, le code fonctionne bien. Merci pour votre effort.. –

1

lancer un client de ligne de commande ftp sans argument. Exécutez la commande debug pour activer l'affichage des messages de protocole et la commande passive pour définir le mode passif. (Remarque: la ligne de commande Windows ftp ne prend pas en charge le mode passif!) Utilisez la commande open pour vous connecter à un hôte. Vous serez invité si vous devez vous connecter. Exécutez la commande ls pour obtenir une liste de répertoires. Grâce à tout cela, le client affichera les messages envoyés et reçus. Il existe probablement une variante de message que votre code ne gère pas. Par exemple, le code SimpleFTP here ne gère pas les réponses multi-lignes. Voir RFC-959 § 4.2: Réponses FTP.

Un système embarqué Je travaille avec répond à une connexion réussie avec:

220-Setting memory limit to 1024+1024kbytes 
220-Local time is now 10:33 and the load is 1.36. 
220 You will be disconnected after 1800 seconds of inactivity. 

Le code SimpleFtp échoue parce qu'il est attend une ligne commençant par "220 ".

En outre, malgré le fait que le protocole FTP soit assez ancien, vous rencontrerez pas mal d'implémentations non conformes.

Si vous avez besoin de faire quelque chose de plus complexe que 'mettre un fichier' ou 'obtenir un fichier', jetez un oeil à edtFTPj/Free.