IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Client SFTP en Java avec les Sockets


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    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 : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Qu'appelles-tu SFTP ? Simple File Transfer Protocol ? Transfert sur SSH ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Candidat au Club
    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 : 3
    Points
    3
    Par défaut
    Merci de ta réponse.
    oui en effet c'est un trensfert sur SSH :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    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.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Candidat au Club
    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 : 3
    Points
    3
    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
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    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 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Candidat au Club
    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 : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    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.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  9. #9
    Candidat au Club
    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 : 3
    Points
    3
    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 éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    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).

  11. #11
    Candidat au Club
    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 : 3
    Points
    3
    Par défaut
    C'est noté.

    Merci Bcp

Discussions similaires

  1. Architecture Client/Serveur en java avec les sockets
    Par ram-0000 dans le forum Réseaux
    Réponses: 0
    Dernier message: 03/04/2013, 11h44
  2. Programmer en Java avec les sockets
    Par mpozagara dans le forum NetBeans
    Réponses: 1
    Dernier message: 29/05/2012, 17h00
  3. communication client serveur avec les sockets
    Par timtima dans le forum Linux
    Réponses: 2
    Dernier message: 07/11/2007, 11h23
  4. application client/serveur avec les sockets
    Par baya1 dans le forum JBuilder
    Réponses: 1
    Dernier message: 24/02/2007, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo