Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : août 2011
    Messages : 7
    Points : 0
    Points
    0

    Par défaut Client SFTP en Java avec les Sockets

    Bonjour,

    Je souhaiterais mettre en place un client SFTP en java, sans passer par aucune libraire, seulement en utilisant les sockets. en FTP ça marche sans aucun souci, sauf qu'en SFTP c'est pas le cas.

    code :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Socket controlSock = new Socket(host, port);				
    				// SshClient 
    				controlSock.setSoTimeout(30000); // timeout if nothing after X s during a read
    				controlSock.setSoLinger(true, 1); // wait 1s on close
    				System.out.println("controlSock : "+controlSock.toString());
     
    				controlReader = new BufferedReader(new InputStreamReader(controlSock.getInputStream()));
    				controlWriter = new BufferedWriter(new OutputStreamWriter(controlSock.getOutputStream()));
     
    				String buf = controlReader.readLine();				
    				System.out.println("readReply : buf : "+ buf);
     
    				String command = "open \"user@host\"";
    				//command = "sftp -o";
    				controlWriter.write(command);				
    				controlWriter.write(EOL);
    				controlWriter.flush();
    				buf = controlReader.readLine();	
    				System.out.println("USER : buf : "+ buf);
    en retour je reçois l'erreur suivante : PROTOCL MISMATCH

    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro Dinobogan Shelashyn
    ingénieur
    Inscrit en
    juin 2007
    Messages
    3 661
    Détails du profil
    Informations personnelles :
    Nom : Homme Dinobogan Shelashyn
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 3 661
    Points : 5 783
    Points
    5 783

    Par défaut

    Qu'appelles-tu SFTP ? Simple File Transfer Protocol ? Transfert sur SSH ?
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : août 2011
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Merci de ta réponse.
    oui en effet c'est un trensfert sur SSH :

    Code :
    1
    2
    3
     
    controlSock : Socket[addr=/host,port=22,localport=50757]
    readReply : buf : SSH-2.0-OpenSSH_4.3

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro Dinobogan Shelashyn
    ingénieur
    Inscrit en
    juin 2007
    Messages
    3 661
    Détails du profil
    Informations personnelles :
    Nom : Homme Dinobogan Shelashyn
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 3 661
    Points : 5 783
    Points
    5 783

    Par défaut

    As-tu commencé par lire ce document ou quelque chose de similaire ?
    Car sans connaitre exactement le protocole, tu n'auras jamais un client fonctionnel.
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : août 2011
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    je sais que c'est un protocole SSH.

    je vais essayer de lire le document que tu m'as indiqué. meme si je pense pas avoir le temps necessaire pour le lire avant la date de livraison de mon module :s

    Merci

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro Dinobogan Shelashyn
    ingénieur
    Inscrit en
    juin 2007
    Messages
    3 661
    Détails du profil
    Informations personnelles :
    Nom : Homme Dinobogan Shelashyn
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 3 661
    Points : 5 783
    Points
    5 783

    Par défaut

    Je pensais que tu voulais faire tout par toi même pour comprendre comment ça fonctionne.
    Mais si tu dois livrer quelque chose rapidement, pourquoi réinventer la roue ?
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : août 2011
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Justement mais on va dire que c'est la politique de la boite si on peut appeler ça comme ça.

    bon apres avoir lu un peu le document, j'ai su que le PROTOCOL MISMATCH etait du à un mauvais retour à la ligne (\r au lieu de \n).

    par contre là je n'ai plus la meme erreur sauf que je ne reçois plus de réponse de la part serveur ça me fait ça :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Exception in thread "main" java.net.SocketTimeoutException: Read timed out
    	at java.net.SocketInputStream.socketRead0(Native Method)
    	at java.net.SocketInputStream.read(Unknown Source)
    	at java.net.SocketInputStream.read(Unknown Source)
    	at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    	at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    	at sun.nio.cs.StreamDecoder.read(Unknown Source)
    	at java.io.InputStreamReader.read(Unknown Source)
    	at java.io.BufferedReader.fill(Unknown Source)
    	at java.io.BufferedReader.readLine(Unknown Source)
    	at java.io.BufferedReader.readLine(Unknown Source)
    	at Main.main(Main.java:65)
    Si tu as une idée ...

    Merci bcp

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro Dinobogan Shelashyn
    ingénieur
    Inscrit en
    juin 2007
    Messages
    3 661
    Détails du profil
    Informations personnelles :
    Nom : Homme Dinobogan Shelashyn
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 3 661
    Points : 5 783
    Points
    5 783

    Par défaut

    C'est probablement que le serveur attend la suite de la commande mais que tu es déjà passer en attente de réponse du serveur.
    Je ne voudrais pas avoir l'air d'insister, mais Apache propose une API, avec toutes les sources, pour gérer proprement du SFTP. Tu gagnerais un temps incroyable et tu limiterais beaucoup les bugs que tu auras nécessairement dans l'implémentation du protocole.
    Que la force de la puissance soit avec le courage de ta sagesse.

  9. #9
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : août 2011
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    d'accord. je vais essayer encore et pis si j'y arrive pas tant pis je passerai par une lib.

    sinon une dernière demande, pourrait m'en recommandé une stp parce qu'il y en plusieurs.

    Merci infiniment

  10. #10
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 597
    Points : 38 488
    Points
    38 488

    Par défaut

    Il y a plusieurs librairies. Tout dépend de tes besois, du niveau de controle que tu as et de tes contraintes de license.

    Contraire à la poliique de la boite? Je pense pas que la boite aie comme politique de gaspiller du temps de programmeur au prix où ça coûte (ou alors elle va vite faire faillite). Je peux comprendre qu'on ramène pas une grosse librairie pour éviter de coder deux classes, mais coder un client ssh correct, ca nécessite beaucoup de travail (gestion des clés, des modes d'authentification, validation des clés publiques, identification des attaque man in the middle, etc).
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  11. #11
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : août 2011
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    C'est noté.

    Merci Bcp

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •