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

Eclipse Java Discussion :

Serveur multithread et Eclipse


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Par défaut Serveur multithread et Eclipse
    Bonjour,

    J'étudie Java en ce moment et j'ai souhaité tester un code exemple de notre poly de cours, sur la programmation réseau, notamment multithread.

    Voila le code (adapter pour une petite application) :

    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
    import java.net.*;
     
    public class serveur {
     
    	public static void main(String[] args) {
    		int  nbClients = 0;
     
    		try {
    			ServerSocket serveur = new ServerSocket(3123); 
    			System.out.println("Serveur ecoute " + serveur.getLocalPort());
     
    			while(true) {
    				Socket reception = serveur.accept();
    				System.out.println("Connexion Client n°" + ++nbClients);
    				Croupier c = new Croupier(reception, nbClients);
    				c.start();
    			}	
    		} catch (Exception e) {
    			System.err.println(e.toString());
    		}
     
    	}
     
    }
     
    import java.io.*;
    import java.net.Socket;
     
    public class Croupier extends Thread {
     
    	/*
    	 * Arguments
    	 */
    	private Socket joueur;
    	private int nbClients;
     
    	/*
    	 * Constructor
    	 */
    	public Croupier(Socket joueur, int nbClients) {
    		this.joueur = joueur;
    		this.nbClients = nbClients;
    	}
     
     
    	public void run() {
    		try {
    			BufferedReader entree = new BufferedReader(new InputStreamReader(joueur.getInputStream()));
    			PrintWriter sortie = new PrintWriter(new OutputStreamWriter(joueur.getOutputStream()));
     
    			sortie.println("Taper votre message");
    			String message = entree.readLine();
     
    			while (!message.equals("exit")) {
    				System.out.println("client " + nbClients + " : " + message);
    				sortie.println("Taper votre message");
    				message = entree.readLine();
    			}
    			joueur.close();
    		} catch (Exception e) {
    			System.err.println(e.toString());
    		}
    	}
     
    }
    Le probleme est que Eclipse me répond seulement "Serveur ecoute 3123", J'aimerais savoir comment faire pour que Eclipse ouvre une console pour chaque thread et une pour le serveur (déjà fait) et que je puisse discuter entre le serveur et le thread.

    Merci d'avance !

    spirit

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour qu'il affiche des trucs, faudrait, peut-être, avoir des clients qui se connectent? Histoire qu'on sorte de accept() ....

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Par défaut
    Bonjour,

    Oui je veux bien ... pourquoi pas ... certes ... m'enfin ...

    Je suis débutant, tu me dis que je reste bloquer au niveau de l'appel de la méthode accept(), pourquoi pas ...
    Si t'es explications pouvais être un tout petit peu plus clair, ca m'éclaircirais les idées.

    Merci.

    spirit

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Désolé, par remarqué le forum dans lequel était posté le sujet

    La méthode accept() te renvoie un Socket qui correspond au dialogue entre ton serveur et un client précis. Tant qu'aucun client ne s'est connecté, on a rien, donc la méthode accept() reste en attente d'un client. Il faut donc un client pour continuer.

    Le while(true) autour sert à boucler autour de accept(). Ca permet d'itérer, au fur et à mesure que les client se connectent, su chacun d'eux. Ensuite, toujours dans la même boucle, tu crée un Thread qui va "prendre en charge" les nouveau client, via l'objet Socket qui leur correspond. Encore une fois, tant qu'il n'y a pas de client à prendre en charge, il ne se passe rien.

    Pour plus de détails sur les socket, je t'invite à parcourir les tutoriaux et FAQs de ce site.

  5. #5
    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
    Effectivement, la méthode "accept" est bloquante. Elle attend éternellement tant qu'il n'y a pas de connexion sur cette Socket.
    Tu peux simplement utiliser la commande telnet, présente sur tous les systèmes, pour simuler un client et vérifier le fonctionnement de ton serveur.
    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.

Discussions similaires

  1. Arrêt d'un serveur multithread
    Par bambou dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 07/07/2010, 16h04
  2. conception serveur multithread
    Par nivose110 dans le forum Réseau
    Réponses: 12
    Dernier message: 17/07/2006, 16h43
  3. Question Serveur Multithread
    Par Mr_Chut dans le forum Réseau
    Réponses: 10
    Dernier message: 09/06/2006, 17h27
  4. Réponses: 5
    Dernier message: 11/01/2006, 07h58

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