[Java] Client FTP [Résolu]

Client FTP [Résolu] [Java] - Java - Programmation

Marsh Posté le 20-03-2003 à 23:35:58    

Bonsoir,
 

Citation :


je voudrais coder un client ftp en java, pour me derouiller LOL mais j'ai un probleme, j'arrive a me connecter sur le ftp, mais des que je veux lui envoyer une commande (USER, SYST, ...) l'appli plante! En fait, le prgm de recoit pas de rep du serveur.
 
Voici le code source, j'espere que vous pourrez m'aider.
 

Code :
  1. import javax.swing.*;
  2.    import java.awt.*;
  3.     public class Fenetre extends JFrame
  4.    {
  5.        public static void main(String[] args)
  6.       {
  7.          JFrame fen=new JFrame("FTP" );
  8.          fen.setDefaultCloseOperation(EXIT_ON_CLOSE);
  9.          fen.setSize(500,300);
  10.          Container contentPane = fen.getContentPane();
  11.          PanneauFond pan = new PanneauFond();
  12.          contentPane.add(pan);
  13.          fen.setVisible(true);
  14.      
  15.       }
  16.    }


 


 
Cette partie est résolu, voir en fin de sujet, pour une derniere question... LOL


Message édité par thunderbird54 le 24-03-2003 à 20:37:04
Reply

Marsh Posté le 20-03-2003 à 23:35:58   

Reply

Marsh Posté le 20-03-2003 à 23:52:09    

[:totoz]
 
 
 
 
 
... bon deja si au lieu de catcher tes exception et rien en faire tu les traitais et/ou afficher la trace, t'aurais peut etre une idée de ce qui passe pas :sarcastic:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-03-2003 à 23:53:41    

on s'en fout de la gui ;)
Donne uniquement le code que tu utilises pour appeller ton serveur FTP ca sera plus clair à débugger (genre faire une version ligne de commande)
 
ensuite installe un serveur FTP sur ta machine et regarde les logs. Si tu te plantes dans le protocole, y aura surement un msg ds les logs


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-03-2003 à 23:54:32    

DarkLord a écrit :

on s'en fout de la gui ;)
Donne uniquement le code que tu utilises pour appeller ton serveur FTP ca sera plus clair à débugger (genre faire une version ligne de commande)
 
ensuite installe un serveur FTP sur ta machine et regarde les logs. Si tu te plantes dans le protocole, y aura surement un msg ds les logs

il a meme pas les messages sur son client [:spamafote]


Message édité par the real moins moins le 20-03-2003 à 23:54:40

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-03-2003 à 09:17:23    

les codes pour appeler le serveur ftp?
je lui envoie juste une commande, pas de codes!!
 
par contre, l'histoire des logs c'est une bonne idée, je vais regarder.

Reply

Marsh Posté le 21-03-2003 à 09:37:51    

Thunderbird54 a écrit :

les codes pour appeler le serveur ftp?
je lui envoie juste une commande, pas de codes!!
 
par contre, l'histoire des logs c'est une bonne idée, je vais regarder.


 
 
 :sarcastic:  
 
je parlais de ton code source java :D
 
On a pas besoin de voir le code de ta GUI on s'en tape puisque c'est pas ca le problème. Ca alourdit ton post et c'est pas facile de déchiffrer ce qui se passe. Surtout que j'ai comme l'idée que ca sera pas le seul problème ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-03-2003 à 11:39:10    

le code concernant le ftp
 

Code :
  1. public void initialisation(String adresse) {
  2.          try {
  3.             JTA_Com.append("\n Connect to "+adresse+", Port 21" );
  4.             sock = new Socket (adresse, 21);
  5.             JTA_Com.append("\n Connexion etablie" );
  6.             out = new BufferedWriter (new OutputStreamWriter
  7.                                    (sock.getOutputStream ())) ;
  8.             inp = new BufferedReader (new InputStreamReader
  9.                                    (sock.getInputStream ())) ;
  10.             JTA_Com.append("\n" + reponseFTP());
  11.          //sock.setSoTimeout(500);
  12.          }
  13.              catch(IOException e)
  14.             {
  15.                System.out.println("IOException" );
  16.            
  17.             }
  18.              catch(SecurityException e) {}
  19.       }
  20.  
  21.  
  22.  
  23.        public void commandeFTP(String commande) {
  24.          try {
  25.             System.out.println("\n write ..." );
  26.             out.flush();
  27.             out.write(commande+"\r\n" );
  28.             System.out.println("\n write ... OK" );
  29.          }
  30.              catch (IOException e) {
  31.                System.out.println("IOException" );
  32.             }
  33.       }
  34.  
  35.  
  36.        public String reponseFTP()
  37.       {
  38.          try {
  39.             String reponse;
  40.             System.out.println(" Read ..." );
  41.             reponse = inp.readLine();
  42.             System.out.println(" Read ... OK" );
  43.             return reponse;
  44.          }
  45.              catch (IOException e)
  46.             {
  47.                System.out.println("IOException" );
  48.                return "";
  49.             }
  50.       }


 
j'ai catché certaines exceptions, mais elles ne s'executent pas quand l'appli plante.
 
Donc en fait, la je crée juste un socket et les flux.
Je veux faire la connexion (réelle USER xxxxn, PASSWORD xxx ...) a la main. c'est le role de ligne_com (cf plus haut, le 2eme bout de code)

Reply

Marsh Posté le 21-03-2003 à 11:43:17    

voici ce qu'il se passe quand j'envoie une commande au ftp
 
 ----jGRASP exec: java Fenetre
 
 CommandeFTP ...
 
 write ...
 
 write ... OK
 
 CommandeFTP ... OK
 
 ReponseFTP ...
 Read ...
 
 ----jGRASP: process aborted by user.
 ----jGRASP: operation complete.
 
 
===> planté LOL

Reply

Marsh Posté le 21-03-2003 à 11:44:11    

:sleep:  
 
les logs de ton serveur FTP disent quoi? On va pas jouer aux devinettes pendant 3 jours hein ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-03-2003 à 11:46:52    

ben suis en stage la, j'ai un 200 avec windows 95, je ne peux pas demarrer un serveur ftp, donc les logs, ca sera pour ce soir, quand je serais chez moi!
 
je voulais juste savoir si le code etait correct.

Reply

Marsh Posté le 21-03-2003 à 11:46:52   

Reply

Marsh Posté le 21-03-2003 à 11:51:02    

Thunderbird54 a écrit :

ben suis en stage la, j'ai un 200 avec windows 95, je ne peux pas demarrer un serveur ftp, donc les logs, ca sera pour ce soir, quand je serais chez moi!
 
je voulais juste savoir si le code etait correct.


 
et tu te connectes où au juste alors?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-03-2003 à 11:54:21    

Thunderbird54 a écrit :

ben suis en stage la, j'ai un 200 avec windows 95, je ne peux pas demarrer un serveur ftp, donc les logs, ca sera pour ce soir, quand je serais chez moi!
 
je voulais juste savoir si le code etait correct.


Juste en passant, quand tu catches les exceptions, moi en général, je mets plutot e.printStackTrace(), et systematiquement !!!


---------------
get amaroK plugin
Reply

Marsh Posté le 21-03-2003 à 11:55:14    

sur mon serveur ftp, quand je suis chez moi,
la j'ai un serveur au taf, mais je n'ai pas acces au log.

Reply

Marsh Posté le 21-03-2003 à 11:56:00    

ok bubuse

Reply

Marsh Posté le 21-03-2003 à 11:57:07    

Thunderbird54 a écrit :

sur mon serveur ftp, quand je suis chez moi,
la j'ai un serveur au taf, mais je n'ai pas acces au log.


 
bin écoute je veux pas etre méchant mais bon faut etre un minimum logique quoi. Si tu bosses sur un truc tu dois avoir accès au minimum au truc que tu utilises quoi ...
 
Ils s'en fout ton maitre de stage que tu joues au devinette avec les erreurs? Demande pour accéder aux logs et puis c'est tout :/
 
Bon en fait ton code là c'est pas super propre quoi. Pq tu n'utilises pas une API comme NetComponents par exemple. J'ai un code valide qui traine qqpart si tu veux (upload de fichier)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-03-2003 à 12:01:21    

ben c'est que mon maitre de stage ne m'as pas demandé de faire un client ftp mdr, ca c'est quand j'ai du temps libre!
 
 
Pourquoi, je n'utilise pas une API?
j'aimerais bien le faire moi meme! (meme si j'ai du mal!)
 
je vais manger retour vers 13h
 
A+

Reply

Marsh Posté le 21-03-2003 à 13:22:19    

Pour toi le pb vient d'ou?
 
d'une erreur de protocole?
ou du erreur de prgm?

Reply

Marsh Posté le 21-03-2003 à 13:39:09    

[:rofl] [:rofl]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-03-2003 à 13:43:39    

Thunderbird54 a écrit :

Pour toi le pb vient d'ou?
 
d'une erreur de protocole?
ou du erreur de prgm?


 
mais ptain ;) J'ai PAS envie de devinner -> regarde les logs. La réponse s'y trouve à 99%


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-03-2003 à 13:47:24    

[:cupra]


---------------
Je code en série et en parallèle
Reply

Marsh Posté le 21-03-2003 à 13:49:48    

[:blueflag]

Reply

Marsh Posté le 21-03-2003 à 14:38:37    

en java, un programme plante pas comme ca sans message d'erreur... Soit tu as un catch vide, soit t'as fais un exit là ou il fallait pas ...

Reply

Marsh Posté le 21-03-2003 à 15:04:47    

benou a écrit :

en java, un programme plante pas comme ca sans message d'erreur... Soit tu as un catch vide, soit t'as fais un exit là ou il fallait pas ...


+1, d'ou ma remarque ... :sarcastic:


---------------
get amaroK plugin
Reply

Marsh Posté le 21-03-2003 à 16:14:03    

bobuse a écrit :


+1, d'ou ma remarque ... :sarcastic:  

:pfff:
http://forum.hardware.fr/forum2.ph [...] =1#t339259 :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-03-2003 à 16:23:13    

Reply

Marsh Posté le 21-03-2003 à 19:51:21    

bon ben il é pas tres explicite mon log!
 
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2003-03-12 23:39:55
#Fields: time c-ip cs-method cs-uri-stem sc-status  
23:39:55 81.49.204.142 [1]USER anonymous 331
23:39:55 81.49.204.142 [1]PASS IEUser@ 230
23:42:02 81.49.204.142 [1]closed - 426
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2003-03-12 23:42:33
#Fields: time c-ip cs-method cs-uri-stem sc-status  
23:42:33 81.49.204.142 [2]USER anonymous 331
23:42:33 81.49.204.142 [2]PASS IEUser@ 530
23:42:38 81.49.204.142 [3]USER anonymous 331
23:42:38 81.49.204.142 [3]PASS IEUser@ 530
23:42:45 81.49.204.142 [4]USER anonymous 331
23:42:45 81.49.204.142 [4]PASS IEUser@ 530
23:43:08 81.49.204.142 [5]USER administrateur 331
23:43:08 81.49.204.142 [5]PASS - 530
23:43:14 81.49.204.142 [6]USER administrateur 331
23:43:14 81.49.204.142 [6]PASS - 530
23:44:19 81.49.204.142 [7]USER anonymous 331
23:44:19 81.49.204.142 [7]PASS IEUser@ 230
23:47:06 81.49.204.142 [7]closed - 426

Reply

Marsh Posté le 21-03-2003 à 20:01:14    

une autre version :
 
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2003-03-21 18:25:04
#Fields: date time c-ip cs-username cs-method cs-uri-stem sc-status time-taken  
2003-03-21 18:25:04 81.53.35.x - [2]closed - 421 1221406
2003-03-21 18:53:21 81.53.35.x anonymous [3]USER anonymous 331 0
2003-03-21 18:53:21 81.53.35.x anonymous@on.the.net [3]PASS anonymous@on.the.net 230 16
2003-03-21 18:54:05 81.53.35.x anonymous@on.the.net [3]closed - 426 43734
2003-03-21 18:54:27 81.53.35.x anonymous [4]USER anonymous 331 0
2003-03-21 18:54:27 81.53.35.x anonymous@on.the.net [4]PASS anonymous@on.the.net 230 0
2003-03-21 18:54:58 81.53.35.x anonymous@on.the.net [4]QUIT - 550 0
2003-03-21 18:56:36 81.53.35.x anonymous [5]USER anonymous 331 0
2003-03-21 18:56:36 81.53.35.x email@notset.com [5]PASS email@notset.com 230 0
2003-03-21 18:57:06 81.53.35.x email@notset.com [5]MKD toto 550 0
                                                                       

Reply

Marsh Posté le 21-03-2003 à 20:02:00    

donc apparemment avec mon client a moi, le ftp ne recoit jamais la commande!
 
Donc il attend une reponse qui ne vient jamais, d'ou le blockage!
 
On a cerné le pb, comment on le corrige lol
 
 


Message édité par thunderbird54 le 21-03-2003 à 20:05:38
Reply

Marsh Posté le 21-03-2003 à 20:02:59    

ski est bien c'est que ça fait pas 25 fois qu'on te dit de mater les traces d'exceptions :sarcastic:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-03-2003 à 20:07:38    

the real moins moins a écrit :

ski est bien c'est que ça fait pas 25 fois qu'on te dit de mater les traces d'exceptions :sarcastic:


Oui, mais DarkLord lui a aussi repeter 25 fois de mater les logs du serveur ftp. Et comme DarkLord a la plus grande gueule (c'est bien connu) ... :sarcastic:  :whistle:


---------------
get amaroK plugin
Reply

Marsh Posté le 21-03-2003 à 20:14:03    

bobuse a écrit :


Oui, mais DarkLord lui a aussi repeter 25 fois de mater les logs du serveur ftp. Et comme DarkLord a la plus grande gueule (c'est bien connu) ... :sarcastic:  :whistle:  

:jap: [:rofl]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-03-2003 à 20:16:16    

mais en fait ya pas d'exception!!!
 
j'ai utilisé le truc de bubuse, je croyais que ct une connerie mais ca compile bien, et en fait le prgm attends une reponse du serveur ftp qui ne vient jamais!!!
 a la fin j'ai un timeout du serveur pi c tout

Reply

Marsh Posté le 21-03-2003 à 20:18:07    

ben en meme temps ton "programme" il fait que se logger, apres s'il fait rien c'est normal que ça parte en timeout nan? [:dawa]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-03-2003 à 20:19:42    

oui mais moi je lui envoie une commande! je ne comprends pas pourquoi il ne la recoit pas.

Reply

Marsh Posté le 21-03-2003 à 20:23:39    

Je m'apelle bobuse  :o  
 
rebalance ton code pour voir ...
 
et gare a toi si tu as laisse un catch vide !!! [:lorill]


---------------
get amaroK plugin
Reply

Marsh Posté le 21-03-2003 à 20:28:52    

non pas taper!!! lol
excuse moi j'avais mal lu.
 

Code :
  1. import java.net.*;
  2.    import java.io.*;
  3.    import javax.swing.*;
  4.    import java.awt.*;
  5.    import java.awt.event.*;
  6.     public class PanneauFond  extends JPanel  implements ActionListener   {
  7.       private JTextField adresse,path,ligne_com;
  8.       private JTextArea JTA_Com,JTA_Mes;
  9.  
  10.       private JButton Valider,Connecter,Quitter;
  11.       private double Val1,Val2,resu;
  12.  
  13.       private Socket sock;
  14.       private BufferedWriter out;
  15.       private BufferedReader inp;
  16.  
  17.       private String code,texte;
  18.  
  19.        public PanneauFond()
  20.       { JPanel Nord=new JPanel();
  21.          adresse=new JTextField("Adresse IP" );
  22.          adresse.addActionListener(this);
  23.          Nord.add(adresse);
  24.          Connecter=new JButton("Connexion" );
  25.          Connecter.addActionListener(this);
  26.          Nord.add(Connecter);
  27.      
  28.      
  29.       // Creation Panneau Gauche
  30.          JPanel Gauche=new JPanel();
  31.          JTA_Com = new JTextArea(15,22);
  32.          JTA_Com.setEditable(false);
  33.          Gauche.add(JTA_Com);
  34.      
  35.       // Creation Panneau Center
  36.          JPanel Centre=new JPanel();
  37.          JTA_Mes = new JTextArea(15,22);
  38.          JTA_Mes.setEditable(false);
  39.          Gauche.add(JTA_Mes);
  40.      
  41.       // Panneau Droite
  42.          JPanel Droite=new JPanel();
  43.      
  44.       // Panneau Bas
  45.          JPanel Bas=new JPanel();
  46.          ligne_com=new JTextField("Tapez ici vos commandes" );
  47.          ligne_com.addActionListener(this);
  48.          Bas.add(ligne_com);
  49.      
  50.          setLayout(new BorderLayout());
  51.          add(Gauche,BorderLayout.WEST);
  52.          add(Droite,BorderLayout.EAST);
  53.          add(Nord,BorderLayout.NORTH);
  54.          add(Centre,BorderLayout.CENTER);
  55.          add(Bas,BorderLayout.SOUTH);
  56.       }
  57.  
  58.  
  59.  
  60.        public void actionPerformed(ActionEvent e)
  61.       {
  62.          Object s=e.getSource();
  63.          String reponse;
  64.      
  65.          if ((s==Connecter) || (s==adresse))
  66.          {
  67.             initialisation(adresse.getText());
  68.          }
  69.          if (s==ligne_com)
  70.          {
  71.             String commande=ligne_com.getText();
  72.        
  73.             System.out.println("\n CommandeFTP ..." );
  74.             commandeFTP(commande);
  75.             System.out.println("\n CommandeFTP ... OK" );
  76.        
  77.             System.out.println("\n ReponseFTP ..." );
  78.             reponse=reponseFTP();
  79.             System.out.println("\n ReponseFTP ...OK" );
  80.        
  81.             JTA_Com.append("\n"+commande);
  82.             JTA_Com.append("\n"+reponse);
  83.             System.out.println(reponse);
  84.          }
  85.       }
  86.  
  87.  
  88.        public void initialisation(String adresse)       {
  89.          try {
  90.             JTA_Com.append("\n Connect to "+adresse+", Port 21" );
  91.             sock = new Socket (adresse, 21);
  92.             JTA_Com.append("\n Connexion etablie" );
  93.             out = new BufferedWriter (new OutputStreamWriter(sock.getOutputStream ())) ;
  94.             inp = new BufferedReader (new InputStreamReader(sock.getInputStream ())) ;
  95.             JTA_Com.append("\n" + reponseFTP());
  96.             //sock.setSoTimeout(500);
  97.          }
  98.              catch(IOException e) {
  99.             e.printStackTrace();
  100.             }
  101.              catch(SecurityException e) {
  102.             e.printStackTrace();
  103.             }
  104.       }
  105.  
  106.  
  107.  
  108.        public void commandeFTP(String commande)       {
  109.          try {
  110.             System.out.println("\n write ..." );
  111.             out.flush();
  112.             out.write(commande+"\r\n" );
  113.             System.out.println("\n write ... OK" );
  114.          }
  115.              catch (IOException e)  {
  116.             e.printStackTrace();
  117.             }
  118.       }
  119.  
  120.  
  121.        public String reponseFTP()
  122.       {
  123.          try {
  124.             String reponse;
  125.             System.out.println(" Read ..." );
  126.             reponse = inp.readLine();
  127.             System.out.println(" Read ... OK" );
  128.             return reponse;
  129.          }
  130.              catch (IOException e) {
  131.                e.printStackTrace();
  132.            
  133.                return "";}
  134.       }
  135.    }


Reply

Marsh Posté le 21-03-2003 à 20:44:17    

ben koi L ne sont plus vides les exceptions!

Reply

Marsh Posté le 21-03-2003 à 23:17:51    

j ai pas tout lu mais pourquoi ne pas utilisé ORO ?

Reply

Marsh Posté le 21-03-2003 à 23:44:14    

Bonjour, pourrais tu copier-coller ici les traces des exceptions ?
 
Cordialement,


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 22-03-2003 à 00:58:23    


 
 :lol:  :lol:  :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed