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 :

transfert de fichier via TCP


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut transfert de fichier via TCP
    bonjour à tous,

    est-ce que quelqu'un aurait déjà réalisé un simple programme client serveur permettant le transfert de fichier entre eux via le protocol TCP ?
    J'ai réussi à faire le simple transfert d'une chaine mais je galère avec les fichiers, alors si quelqu'un pouvait m'aider !!!

    Marion

  2. #2
    Membre confirmé Avatar de L8O8L
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 148
    Par défaut
    Salut,

    J'ai le même problème, car je suis en cours et je dois traiter le transfert de fichier avec TCP. Mais je n'y arrive pas non plus...

    Meri de m'aider

  3. #3
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par marion5515 Voir le message
    bonjour à tous,

    est-ce que quelqu'un aurait déjà réalisé un simple programme client serveur permettant le transfert de fichier entre eux via le protocol TCP ?
    J'ai réussi à faire le simple transfert d'une chaine mais je galère avec les fichiers, alors si quelqu'un pouvait m'aider !!!

    Marion
    Tu as réussi avec une chaîne, il ne doit donc y avoir aucun problème avec un fichier. Précise ton problème
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    Eh bien , dans le sujet de l'exercice, on explique que le transfert de fichier se fait en utilisant la capacité d'un flux d'entrée (méthode available() de la classe InputStream) du fichier pour le client qui l'émet et la capacité du flux d'entrée du socket pour le serveur qui reçoit le fichier. Je ne vois pas quand ou plutôt comment se servir du résultat.
    Voila mon code client pour transfert de chaine :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
     
    public class client {
     
    	public static void main (String[] args){
     
    		try {
    			Socket client=new Socket("localhost",2555);
    			BufferedReader br= new BufferedReader(new InputStreamReader(client.getInputStream()));
    			PrintWriter pw= new PrintWriter(client.getOutputStream());
    			BufferedReader mess= new BufferedReader(new InputStreamReader(System.in));
    			String recu;
    			while(true){
    				recu=mess.readLine();
    				if(recu.trim().equals("bye")){
    					pw.println("bye");
    					pw.flush();
    					client.close();
    					System.exit(0);
    				}
    				pw.println(recu);
    				pw.flush();
    				System.out.println("Message envoye au serveur : "+recu);
    				recu=br.readLine();
    			}
    		} catch (UnknownHostException ue) {
    			ue.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
     
     
    et pour le serveur :
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
     
     
    public class serveur {
     
    	public static void main (String[] args){
     
    		try {
    			ServerSocket servSo= new ServerSocket(2555);
    			Socket connexionClient=servSo.accept();
    			BufferedReader br=new BufferedReader(new InputStreamReader(connexionClient.getInputStream()));
    			PrintWriter pw= new PrintWriter(connexionClient.getOutputStream());
    			String mess;
    			while(true){
    				mess=br.readLine();
    				if(mess.trim().equals("bye")){
    					servSo.close();
    					connexionClient.close();
    					System.exit(0);
    				}
    				pw.println(mess);
    				System.out.println("Message envoye par le client :"+mess);
    				pw.flush();		
     
    			}
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    }
    Cela fonctionne sans problème, le client envoie des messages au serveur qui affiche ce qu'il reçoit jusqu'à ce que le client dise "bye" ce qui ferme le socket .
    Pour le transfert de fichier je me doute que ce n'est pas très différent mais je suis bloquée !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Tout d'abord, penses à la balise "CODE", ce sera plus lisible !

    Pour envoyer des fichiers, c'est à peu près pareil, il faut envoyer le fichier octet par octet (ou byte ou je ne sais pas trop en fait). Voici une piste (ce que j'utilise pour envoyer un fichier d'un client vers un serveur). A partir de là, la partie serveur (celle qui recoit) ne doit pas être compliquée à deviner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    BufferedInputStream inFichier = new BufferedInputStream(new FileInputStream(fichier));
    OutputStream outFichier = new BufferedOutputStream(socket.getOutputStream());
    byte[] octets = new byte[1024];
    int num;
    while ((num = inFichier.read(octets, 0, 1024)) != -1) {
      outFichier.write(octets, 0, num);
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    merci pour cette aide mais je n'avance pas plus !
    J'ai fait le client comme indiqué, j'ai commencé le serveur mais je n'arrive pas à le terminé!

    voila le semblant de code que j'ai essayé de faire pour le serveur :
    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
    21
    22
    23
    24
     
    public class serveur{
     
        public static void main(String[] args){
     
            try{
                ServerSocket so=new ServerSocket(1234);
                System.out.println("Attente de connexion ...");
                Socket conexClient=so.accept();
                System.out.println("Connexion acceptee !");
                BufferedReader br= new BufferedReader(new InputStreamReader(conexClient.getInputStream()));
                PrintWriter pw= new PrintWriter(conexClient.getOutputStream(),true);
                File fichierRecu=new File("copie.txt");
                FileWriter fis=new FileWriter(fichierRecu);
                String ligne=br.readLine();
                while(true){
                    fis.write(ligne);
                    ligne=br.readLine();
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    mais effectivement comme me l'indique l'exception levée quand je lance le serveur, le bufferedReader est vide. Alors est-ce que je dois travailler avec le printwriter plutôt ? Ou peut-être que je suis totalement à côté de la plaque une fois de plus car je ne comprends pas grand chose dans les protocoles ! HELP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Tu peux donner le message de l'exception que tu reçois ?

Discussions similaires

  1. [automatisation] Transferts de fichiers via FTPEXPERT 3
    Par nicetios dans le forum Internet
    Réponses: 6
    Dernier message: 14/10/2006, 13h47
  2. transfert de fichier via port RS232, ...
    Par Axiome dans le forum C
    Réponses: 2
    Dernier message: 21/04/2006, 13h51
  3. Transfert de fichier via sockets...
    Par damien99 dans le forum MFC
    Réponses: 8
    Dernier message: 19/02/2006, 14h41
  4. Réponses: 16
    Dernier message: 28/11/2005, 19h09
  5. []transfert de fichiers via FTP
    Par ista9im dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/10/2005, 23h02

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