Probleme envoi client ftp... [resolu]

Probleme envoi client ftp... [resolu] - Java - Programmation

Marsh Posté le 15-09-2004 à 00:06:48    

chalut, je suis en train de faire un client ftp en ce moment (le truc que pas mal de debutants commence à faire pour se faire la main en programmation). Seulement j'ai un probleme... j'ai deja tout implementé (mon interface, mes actions...) sauf une seule chose, l'action d'envoi de fichier au serveur (upload), car la j'y arrive pas. est ce quelqu'un peut me dire comment faire? :sweat:  pourtant je suis bien connecté au serveur, j'arrive meme à créé un fichier sur le ftp... [:w3c compliant]  
deuxieme question, j'ai voulu regarder des trucs pour voir comment ca marche un peu le FTP et je suis tombé sur ce lien qui a l'air interessant -> http://www.securite.teamlog.fr/pub [...] index.html
mais je n'est pas compris la vrai diference entre le mode passif et actif (à part pour l'histoire du firewall et de flux entrant) est ce qu'il y a vraiment un interet d'utiliser l'un ou l'autre.
Merci d'avance  :jap:


Message édité par neg'gwada le 17-09-2004 à 00:02:32

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 00:06:48   

Reply

Marsh Posté le 15-09-2004 à 10:37:33    

tu utilises quoi comme lib pour le ftp ?
c'est quoi ton "probleme" ?


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

Marsh Posté le 15-09-2004 à 11:16:02    

en fait j'utilise une class qui est deja crée, qui gere la creation du socket la connexion, login, download... toutes les methodes qui permettent de gerer un ftp, moi ce que je fais c'est utiliser cette classe pour l'incorporrer a mon programme (pas besoin de creer ce qui existe deja)
je la met sur mon serveur ftp [:ddr555] pour que tu vois
http://reptils.free.fr/forumhardwa [...] ction.java
donc j'ai compris en lisant cette class comment fonction en gros le serveur ftp, (envoi d'une commande du style "PWD" ou "STOR fich.txt" ), donc j'utilise un objet FtpConnection Con=new FtpConnection() pour faire realiser mes taches, cad me connecter, deconnecter, creer un dossier... mais je n'arrive pas a uploader avec sa methode upload :(
j'ai essayé en dure pour voir en faisant executeCommand("STOR"+" fich.txt" ); mais ca ne marche pas non plus... :sweat:


Message édité par neg'gwada le 15-09-2004 à 11:22:19

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 12:16:46    

neg'gwada a écrit :

en fait j'utilise une class qui est deja crée, qui gere la creation du socket la connexion, login, download... toutes les methodes qui permettent de gerer un ftp, moi ce que je fais c'est utiliser cette classe pour l'incorporrer a mon programme (pas besoin de creer ce qui existe deja)


 j'avais bien compris, je te demandais *quelle* librairie tu utilisais.

neg'gwada a écrit :


je la met sur mon serveur ftp [:ddr555] pour que tu vois
http://reptils.free.fr/forumhardwa [...] ction.java


hmm.. connaissais pas..
 

neg'gwada a écrit :


donc j'ai compris en lisant cette class comment fonction en gros le serveur ftp, (envoi d'une commande du style "PWD" ou "STOR fich.txt" ), donc j'utilise un objet FtpConnection Con=new FtpConnection() pour faire realiser mes taches, cad me connecter, deconnecter, creer un dossier... mais je n'arrive pas a uploader avec sa methode upload :(
j'ai essayé en dure pour voir en faisant executeCommand("STOR"+" fich.txt" ); mais ca ne marche pas non plus... :sweat:


euh oui "ça ne marche pas", ça veut dire quoi !?
 
(...  [:pepe le putois] ...)


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

Marsh Posté le 15-09-2004 à 14:13:58    

the real moins moins a écrit :


euh oui "ça ne marche pas", ça veut dire quoi !?
(...  [:pepe le putois] ...)

je ne comprend pas  :??: , tu confirmes que ca ne marche pas ou bien tu veux que j'explicite ce qui ne marche pas?


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 15:20:19    

PUTAIN MAIS FLINGUEZ LE LUI !


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

Marsh Posté le 15-09-2004 à 16:01:48    

bon laisse tombé, je ne comprend pas ce que tu dis et ca ne sert à rien de t'énerver, si ca te fait chier de me repondre ben tu evites de repondre...


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 17:54:28    

:cry:
 
ça fait 4 posts que je te demande quel est le problème, elle est si complexe que ça la question :cry:


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

Marsh Posté le 15-09-2004 à 18:04:57    

le monsieur -- avec sa coupe beatles il te demande
 
SAI QUOI QUI FONCTIONNE PAS EXACTEMENT ?
 
Il demande des explications claires et précises, des messages d'erreur, tu vois des trucs du style quoi [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-09-2004 à 18:58:40    

Si tu veux obtenir une réponse, tu devrais au moins joindre la classe que tu as écrite et qui fait appel à FtpConnection.java, et indiquer clairement ce qui se passe (ou ne se passe pas!) comme real-- et masklinn te le demandent.
 
On saurait au moins de quoi il retourne et on pourrait éventuellement tenter de reproduire le problème (qu'on ne connait tjs pas).


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-09-2004 à 18:58:40   

Reply

Marsh Posté le 15-09-2004 à 18:59:57    

the real moins moins a écrit :

:cry:
 
ça fait 4 posts que je te demande quel est le problème, elle est si complexe que ça la question :cry:

ok désolé alors :whistle: j'avais pas pigé, ce qui se passe exactement... ben rien [:ddr555] il n'y a ni message d'erreur, d'exception, il ne se passe rien... [:spamafote]. la methode Upload  renvoi un booleen j'obtient false (l'envoi n'a pas ete effectué). Comme la journée je ne suis pas chez moi donc je n'ai pas encore peu chercher de nouveau, mais d'ici peu le temps que je m'y remette ce soir je regarde si vraiment il n'y a pas une erreur evidente ou cachée qui m'a echappée. Mais comme mes connaissances sont limitées pour l'instant, car ca fait deux mois que je me suis mis à java donc je n'arrive pas à decortiqué correctement la fonction Upload de la class qui est plus haut en lien.


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 19:02:05    

lol

Reply

Marsh Posté le 15-09-2004 à 19:02:33    

sircam a écrit :

Si tu veux obtenir une réponse, tu devrais au moins joindre la classe que tu as écrite et qui fait appel à FtpConnection.java, et indiquer clairement ce qui se passe (ou ne se passe pas!) comme real-- et masklinn te le demandent.
 
On saurait au moins de quoi il retourne et on pourrait éventuellement tenter de reproduire le problème (qu'on ne connait tjs pas).

ok je vais vous donner plus tard la partie de mon code qui concerne le Send. Mais pas trop de critiques svp :whistle: sur l'optimisation du code, car je debute...(je code encore comme un cochon)


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 19:06:08    

neg'gwada a écrit :

ok je vais vous donner plus tard la partie de mon code qui concerne le Send. Mais pas trop de critiques svp :whistle: sur l'optimisation du code, car je debute...(je code encore comme un cochon)


Alors là ça va ch*er pour ta g***le  :D ! Ici on ne supporte pas le code merdique ! Ca nous irrite les yeux. Tu seras obligé de le corriger point par point pour qu'il soit présentable avant même qu'on envisage d'aborder le fond de la question.
 
J'rigole, mais fais gaffe  [:aline2003]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-09-2004 à 21:51:59    

voici mon code:

Code :
  1. class Send_Thread extends Thread{
  2.    
  3.     public Send_Thread(){               
  4.     }
  5.     public void run(){
  6.         try{
  7.             //c'est un flag pour savoir si mon processus de Send est en vie
  8.             FTP_client.Fenetres.Envois.Fenetre_taches.Bool_reg[7]=true;
  9.            
  10.             while(FTP_client.Fenetres.Envois.Fenetre_taches.Bool_reg[7]){
  11.             //listModel c'est ma liste de paths à envoyer
  12.             if(!(FTP_client.Fenetres.Envois.List_send.listModel.getSize()==0)){
  13. //c'est mon bouton pour ouvrir ma fenetre de list de paths              FTP_client.Fenetres.Envois.Fenetre_taches.bouton_list.setEnabled(false);
  14.                 //test pour voir si la creation de fichier se fait
  15.                 if(Ftp_Thread.con.makeDirectory("test de make" )){
  16.                     System.out.println("fichier créé" );
  17.                 }
  18.                 File f=null;
  19.                 for(int j=0;j<FTP_client.Fenetres.Envois.List_send.listModel.getSize();j++){
  20.                 f=new File(FTP_client.Fenetres.Envois.List_send.listModel.get(j).toString());
  21.                     if(f.isDirectory()){
  22.                         //pas encore codé
  23.                     }
  24.                     if(f.isFile()){
  25. // Ftp_Thread c'est ma thread qui gere le lancement de send et con le socket
  26. Ftp_Thread.con.upload("\",f.getPath()));
  27.                     }
  28.                 }
  29.             }           
  30.             this.sleep(200);
  31.             //on met le flag à faulse pour dire que les envois sont finis
  32.             FTP_client.Fenetres.Envois.Fenetre_taches.Bool_reg[7]=false;
  33.             FTP_client.Fenetres.Envois.Fenetre_taches.Chemin_Local.setEnabled(true);
  34.         }
  35.         }
  36.         catch(Exception exc){
  37.             JOptionPane.showMessageDialog(null,"erreur d'envoi","Exception error",0);
  38.             FTP_client.Fenetres.Envois.Fenetre_taches.Bool_reg[7]=false;
  39.         }
  40.     } 
  41. }


voila j'espere que c'est clair, si vous voyez un truc dites moi, j'utilise le class qui est en lien plus pour les operations liés au serveur et les import ....*; sont tous là.


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 22:37:24    

houlà :sweat:
 
 
... tu voudrais pas faire un prog de test tout simple qui ne fait qu'envoyer ton fichier, en command line et sans gui ?


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

Marsh Posté le 15-09-2004 à 22:46:10    

ouais tu as raison je vais tester, faut dire que le foot m'a empéché de poursuivre [:ddr555]


Message édité par neg'gwada le 15-09-2004 à 22:46:25

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 15-09-2004 à 22:58:56    

the real moins moins a écrit :

... tu voudrais pas faire un prog de test tout simple qui ne fait qu'envoyer ton fichier, en command line et sans gui ?


+1  :o  
 
C'est infernal de se taper tout un code qui n'a rien à voir  :sweat:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 16-09-2004 à 01:03:43    

bon j'ai fais le prog qui se connect tout simplement puis créé un dossier et puis fait un upload pour enfin se deconnecter  
voici le prog:
la fonction attente fait une attente de x millisecondes

Code :
  1. if(con.connect("ftpperso.free.fr" )){
  2.             System.out.println("la connexion est lancée" );
  3.             //on se log
  4.             attente(200);
  5.             if(con.login("reptils", "*****" )){
  6.                 attente(500); 
  7.                 //creation d'un dossier           
  8.                 con.makeDirectory("ceci est un test" ))
  9.                 attente(500);
  10.                 //upload
  11.                 if(con.uploadFile("\\","E:\\java\\workspace\\test\\Send2FTP\\test d'envoi.txt" )){
  12.                      System.out.println("l'envoi est effectué" );
  13.                      attente(500);
  14.                 }
  15.                 else{ System.out.println("l'envoi a chié..." );}
  16.                 //on se deconnect
  17.                 if(con.logout()){
  18.                      System.out.println("on est bien délogué" );
  19.                      attente(100);
  20.                      con.disconnect();
  21.                 }
  22.                 }
  23.             else{ System.out.println("pas de login" );}
  24.             }           
  25.             else{ System.out.println("la connexion a foiré" );}


 
j'ai mis le flux de donné in et out et alors j'obtiens:

la connexion est lancée
220 Serveur de mise a jour des pages perso de Free.fr version [Aug 24 2004 23:59:27]
user reptils
pass *****
331 Password required for reptils.
230 User reptils logged in.
mkd ceci est un test
257 "/ceci est un test" - Directory successfully created

puis apres plus rien  :sweat:  il s'arrete a la creation du fichier et ne fait pas l'envoi... et le processus est toujours actif, je ne sais pas qu'est ce que fait le programme [:w3c compliant]


Message édité par neg'gwada le 16-09-2004 à 08:42:32

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 16-09-2004 à 01:06:32    

déjà, vire le ' de ton nom de fichier.
.. mais bon. je sais pas.. connais pas ta libraire.
 
essaie d'utilise commons-net, la classe FTPClient, voir si t'as plus de succes.
( http://jakarta.apache.org/commons/net/ )


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

Marsh Posté le 16-09-2004 à 11:53:13    

et le class FtpBean qui est dispos sur le net vous en pensez quoi?  http://www.geocities.com/SiliconVa [...] n/ftpbean/


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 16-09-2004 à 12:21:08    

neg'gwada a écrit :

et le class FtpBean qui est dispos sur le net vous en pensez quoi?  http://www.geocities.com/SiliconVa [...] n/ftpbean/


Dunno, mais celle proposée par real-- (jakarta, anciennement ORO) marche pas mal. Les seuls bugs sur lesquels je suis tombé concernaient le logout.
 
On l'utilise en production sur un système extrêmement important et ça donne satisfaction.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 16-09-2004 à 12:43:59    

sircam >> tu pourrais jeter un oeil sur mon problème dans le topic blablatech@java alors stp? [:cupra]


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

Marsh Posté le 16-09-2004 à 13:27:40    

the real moins moins a écrit :

sircam >> tu pourrais jeter un oeil sur mon problème dans le topic blablatech@java alors stp? [:cupra]


Il contient 1872 posts...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 16-09-2004 à 14:16:49    

c'est à la fin [:itm]


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 16-09-2004 à 14:47:37    

lol  
la classe FTPClient :ouch: je ne vais meme pas utiliser 1% de ce code, il va falloir que je fasse le tri dans ce vaste fichier.class, merci en tout cas pour le lien je vais tester tout ca...


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 16-09-2004 à 15:03:56    

sircam a écrit :

Il contient 1872 posts...

ici [:cupra]


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

Marsh Posté le 17-09-2004 à 00:00:19    

vous savez quoi [:cupra], j'ai resolu mon probleme, j'ai honte.
en fait il ne se passait car pour l'envoi celon si on est en connexion active ou passive ben il envoi differement, et j'avais mal defini le mode d'envoi  [:ddr555] donc il ne faisait ni l'un ni l'autre...
merchi quand meme à vous les gars :jap:. Promis lorsque mo logiciel sera fini je vous le met en partage pour que vous puissiez critiquer  :D


Message édité par neg'gwada le 17-09-2004 à 00:02:08

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 18-09-2004 à 12:36:32    


Parce que c'est toi, j'ai jeté un oeil sur le code que tu proposes et j'ai tenté de faire un simple upload sur mon compte free.fr.
 
Résultat tout à fait décevant.
 
Le transfert se réalise correctement, tant avec que sans mode passif, mais le programme bloque et se termine par un 'connection reset by peer'. Après ajout massif de debugging, il apparaît que ça bloque sur completePendingCommand.
 
Quelle déception.  :(  
 
Tu avais quoi plus précisemment avec ton pipe cassé ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 18-09-2004 à 13:08:11    

euuuuuuuuuuuuuh, par coeur je sais plus, et j'ai pas la machine sous la main là, je m'y remet apres le weekend... mais en gros ça uploadait +/-80ko (sur les 2-300) et puis ça partait en exception (une io je suppose) avec un message "..broken pipe..." (avant d'arriver au completePendingCommand je crois - à vrai dire je ne sais plus pourquoi j'avais appelé cette methode, sans doute pour essayer vu que ça ne marchait déjà pas).. plus de précision la semaine prochaine.


Message édité par the real moins moins le 18-09-2004 à 13:09:30

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

Marsh Posté le 18-09-2004 à 13:08:21    

(merci^^[:cupra])


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

Marsh Posté le 18-09-2004 à 23:17:52    

dites, vu que vous faites des truc sur le transfert ftp vous devez savoir ca, lorsqu'on fait un upload ou un download comment on fait pour avoir l'evolution du transfert, pour mettre sur un Jprogressbar? j'ai pensé à faire une requette pendant le transfert de la taille du fichier(toutes les 200 ms), mais je trouve que c'est un peu lourd comme methode. des solutions?


Message édité par neg'gwada le 19-09-2004 à 02:10:02

---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 19-09-2004 à 17:51:44    

j'ai trouvé un truc qui permet de recuperer les infos en utlisant la commande "STAT", seulement je n'arrive pas à l'utiliser car comme le fichier est en train de transmettre le flux de donné, j'ai l'impression que le canal de connexion est OQP... [:spamafote]


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 19-09-2004 à 17:54:04    

ben ça depend de la lib que tu utilises, ça doit en general fonctionner par callback ce genre de truc


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

Marsh Posté le 19-09-2004 à 19:00:45    

ben en faite je n'ai pas cnangé de lib, j'utilise toujours FtpConnection.java, mais c'est quoi un callback?


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 20-09-2004 à 19:19:41    

je crois avoir compris comment faire pour avoir l'evolution de l'upload en fait lors de l'up ce qu'il se passe d'apres le code du transfert:

Code :
  1. private void transferData(InputStream in, OutputStream out) throws IOException
  2.     {
  3.         byte b[] = new byte[BLOCK_SIZE];
  4.         int amount;
  5.  // Stock les donnés dans un fichier
  6.         while ((amount = in.read(b)) > 0)
  7.         {
  8.             out.write(b, 0, amount);
  9.         }
  10.     }

où BLOCK_SIZE vaut 4096. donc à priorie on stock des packets d'octets (4096) puis on envois donc dans la boucle while j'ai qu'a mettre un compteur et j'obtient achaque fois combien de paquets j'envois donc -> progressbar


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 21-09-2004 à 11:09:54    

tiens au fait moi j'ai plus mes problemes de pipe cassée. pas compris, mais j'ai eu d'autres problèmes réseau à la maison ces temps-ci, donc ... [:spamafote]
 
 
 
.. par contre commons-net, niveau archi c'est pas la panacée [:mlc] .. pour avoir un listener sur mon upload ftp, j'ai du étendre la classe FTPClient et copier-coller une methode entière pour pouvoir appeler Util.copyStream avec un listener :/


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

Marsh Posté le 21-09-2004 à 12:13:20    

heu comment dire... à force de faire des tests avec mon logiciel sur mon serveur ftp de free, ben je suis bannis... :'( et ca fait maintenant plus de 24 heures
je ne peux me connecter à aucun ftp meme ceux de mes potes qui sont sur d'autres serveurs.
ca t'est pas encore arrivé the real moins moins?


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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