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 :

utiliser les sockets


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut utiliser les sockets
    bonsoir

    je veux bien que vous m'aidez à réaliser un simple tchat entre deux pc par exemple le pc1 envoie un message "salut" et le deuxiéme pc recoit le message salut
    j'ai lu le tutorial sur les socket mais je n'ai pas bien compris

    est ce que pour tester l'envoie des messages , je dois avoir deux machine (ordinateur) A (client) et B (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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Le programme du serveur
    import java.io.*;
    import java.net.*;
     
    public class Serveur {
       static final int port = 8080;
     
       public static void main(String[] args) throws Exception {
            ServerSocket s = new ServerSocket(port);
            Socket soc = s.accept();
     
            // Un BufferedReader permet de lire par ligne.
            BufferedReader plec = new BufferedReader(
                                   new InputStreamReader(soc.getInputStream())
                                  );
     
            // Un PrintWriter possède toutes les opérations print classiques.
            // En mode auto-flush, le tampon est vidé (flush) à l'appel de println.
            PrintWriter pred = new PrintWriter(
                                 new BufferedWriter(
                                    new OutputStreamWriter(soc.getOutputStream())), 
                                 true);
     
            while (true) {
               String str = plec.readLine();          // lecture du message
               if (str.equals("END")) break;
               System.out.println("ECHO = " + str);   // trace locale
               pred.println(str);                     // renvoi d'un écho
            }
            plec.close();
            pred.close();
            soc.close();
       }
    }
    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
     
    Le programme du client
    import java.io.*;
    import java.net.*;
    /** Le processus client se connecte au site fourni dans la commande
     *   d'appel en premier argument et utilise le port distant 8080.
     */
    public class Client {
       static final int port = 8080;
     
       public static void main(String[] args) throws Exception {
            Socket socket = new Socket(args[0], port);
            System.out.println("SOCKET = " + socket);
     
            BufferedReader plec = new BufferedReader(
                                   new InputStreamReader(socket.getInputStream())
                                   );
     
            PrintWriter pred = new PrintWriter(
                                 new BufferedWriter(
                                    new OutputStreamWriter(socket.getOutputStream())),
                                 true);
     
            String str = "bonjour";
            for (int i = 0; i < 10; i++) {
               pred.println(str);          // envoi d'un message
               str = plec.readLine();      // lecture de l'écho
            }
            System.out.println("END");     // message de terminaison
            pred.println("END") ;
            plec.close();
            pred.close();
            socket.close();
       }
    }
    mais est ce que j'ai besoin des modification , difinir adresse ip de chaque machine

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par minooo Voir le message
    est ce que pour tester l'envoie des messages , je dois avoir deux machine (ordinateur) A (client) et B (serveur)

    Non. A et B sont le même poste (même adresse) mais deux programmes (un client et un serveur).

    Tu peux voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Socket socket = new Socket(args[0], port);
    Il faut passer "localhost" ou "127.0.0.1" en paramètre à ton programme client.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Par défaut
    merci
    j'ai testé sur mon pc et ça fonctionne mais je n'arrive pas à faire l'échange des message par exemple

    le client envoie bonjour AAA
    le serveur le renvoie le message bonjour rrr
    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
     
    import java.io.*;
    import java.net.*;
     
    public class client extends Object {
     
     public static void main (String args[]) {
       String          reponse;
       Socket          leSocket;
       PrintStream     fluxSortieSocket;
       BufferedReader  fluxEntreeSocket;
     
     
       try {
         // creation d’une socket et connexion à la machine marine sur le port numéro 7
         leSocket = new Socket("127.0.0.1", 2555);
     
         System.out.println("Connecté sur : "+leSocket);
     
         // création d’un flux de type PrintStream lié au flux de sortie de la socket
         fluxSortieSocket = new PrintStream(leSocket.getOutputStream());
         // creation d’un flux de type BufferedReader lié au flux d’entrée de la socket
         fluxEntreeSocket = new BufferedReader(new 
                                         InputStreamReader(leSocket.getInputStream()));
     
         // envoi de données vers le serveur
         fluxSortieSocket.println("Bonjour le monde!");
     
         // attente puis réception de données envoyées par le serveur 
         reponse = fluxEntreeSocket.readLine();
     
         System.out.println("Reponse du serveur : " + reponse);
     
         leSocket.close();
       } // try
       catch (UnknownHostException ex)
       {
         System.err.println("Machine inconnue : "+ex);
         ex.printStackTrace();
       }
       catch (IOException ex)
       {
         System.err.println("Erreur vvvv: "+ex);
         ex.printStackTrace();
       }    
     } // main
    } // class

    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
     
     
    import java.io.*;
    import java.net.*;
     
    public class serveur extends Object {
     
     public static void main (String args[]) {
       ServerSocket    socketEcoute;
       Socket          socketService;
       InputStream     entreeSocket;
       OutputStream    sortieSocket;
     
       try {
         // création du socket d’écoute (port numéro 7)
         socketEcoute = new ServerSocket(2555);
     
         while (true) {
           // attente d’une demande de connexion
           socketService = socketEcoute.accept();
     
           System.out.println("Nouvelle connexion : " + socketService);
     
           // récupération des flux d’entrée/sortie de la socket de service
           entreeSocket = socketService.getInputStream();
           sortieSocket = socketService.getOutputStream();
     
           try {
             int b = 0;
             while (b != -1) {
               b = entreeSocket.read();
     
     
               sortieSocket.write(b);
             } // while
     
             System.out.println("Fin de connexion");
           } // try
           catch (IOException ex)
           {
             // fin de connexion
             System.out.println("Fin de connexion : "+ex);
             ex.printStackTrace();
           }
     
           socketService.close();
         } // while (true)
       } // try
       catch (Exception ex)
       {
         // erreur de connexion
         System.err.println("Une erreur est survenue : "+ex);
         ex.printStackTrace();
       }
      } // main
    } // class

Discussions similaires

  1. envoyer un Objet en utilisant les sockets
    Par g.amine dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 02/02/2008, 08h56
  2. Réponses: 1
    Dernier message: 20/02/2007, 18h47
  3. Requete en utilisant les sockets (TSocketConnection)
    Par alexdfr dans le forum Delphi
    Réponses: 4
    Dernier message: 04/10/2006, 16h53
  4. [C++]bibliotheque utilisant les sockets et un peu plus...
    Par hansaplast dans le forum Développement
    Réponses: 3
    Dernier message: 05/12/2005, 14h28
  5. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 17/05/2005, 14h24

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