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 :

demande d'information sur utilisation des threads dans les sockets


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 32
    Points
    32
    Par défaut demande d'information sur utilisation des threads dans les sockets
    bonsoir à tous le monde dans ce code
    Code :

    import java.io.IOException;
    import java.net.*;

    public class Serveur {

    public static void main(String[] zero){

    ServerSocket socket;
    try {
    socket = new ServerSocket(2009);
    Thread t = new Thread(new Accepter_clients(socket));
    t.start();
    System.out.println("Mes employeurs sont prêts !");

    } catch (IOException e) {

    e.printStackTrace();
    }
    }
    }

    class Accepter_clients implements Runnable {

    private ServerSocket socketserver;
    private Socket socket;
    private int nbrclient = 1;
    public Accepter_clients(ServerSocket s){
    socketserver = s;
    }

    public void run() {

    try {
    while(true){
    socket = socketserver.accept(); // Un client se connecte on l'accepte
    System.out.println("Le client numéro "+nbrclient+ " est connecté !");
    nbrclient++;
    socket.close();
    }

    } catch (IOException e) {
    e.printStackTrace();
    }
    }





    dans le tutoriel il dit qui créer un thread par connexion mais quand je lit le code je voit que le thread est créer au départ seulement
    je voudrais comprendre l'instruction Thread t = new Thread(new Accepter_clients(socket)) créer un seul thread comment les autres thread sont créer
    merci d'avance

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu as raison. Le code que tu nous montres ne crée qu'un seul thread, au début. Il ne crée pas un thread à chaque nouvelle connexion.

    C'est assez inhabituel de créer un server de cette façon. En général, on fait plutôt comme ça:

    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
     
    import java.io.IOException;
    import java.net.*;
     
    public class Serveur {
     
    public static void main(String[] zero){
     
    ServerSocket server;
    try {
    // créer le serveur
    server= new ServerSocket(2009);
     
    // boucle infinie: attendre une nouvelle connexion
    while(true) {
    Socket client = server.accept();
     
    // créer un nouveau thread pour gérer la nouvelle connexion
    Thread t = new Thread(new GererClients(client));
    t.start();
    }
    } catch (IOException e) {
     
    e.printStackTrace();
    }
    }
    }
     
    class GererClients implements Runnable {
     
    private Socket socket;
    private static int nbrclient = 0;
     
    public GererClients(Socket s){
    socket = s;
    nbrclient++;
    }
     
    public void run() {
     
    try {
    System.out.println("Le client numéro "+nbrclient+ " est connecté !");
    socket.close();
    }
     
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

Discussions similaires

  1. Utilisation des threads pour les sockets
    Par Leaffy dans le forum Tcl/Tk
    Réponses: 7
    Dernier message: 23/08/2012, 09h52
  2. Utilisation des threads dans une application Perl/Tk
    Par Kroui dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 04/07/2011, 20h00
  3. Problème d'utilisation des threads dans mes servlets
    Par casho dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 08/08/2007, 19h34
  4. Utiliser des variables dans les noms d'objet
    Par Torkan dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/03/2007, 23h54
  5. utilisation des sessions dans les jsp
    Par casho dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/08/2006, 19h45

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