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 :

Lancement d'un thread


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut Lancement d'un thread
    j'ai essaye de le lancer mon thread comme ci_dessous mais ca ne marche pas

    Clients thread = new Clients(client);
    thread.start();

    ca ne se lance pas parcontre quand je fais

    Clients c = new Clients(client);

    et que le start est dans le constructeur ca fonctionne (le run se lance).

    mon code ici

    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
     
    public class locSrv {	
     
    	public static void main(String[] args) {
     
    		InetAddress iaddr = null;;
    		ServerSocket serveur = null;
    	    try{
    	    	serveur = new ServerSocket(constantes.port, constantes.MAX_PENDING);
    	    	serveur.setReuseAddress(true);
    	        System.out.println("Serveur démarré sur le port " + constantes.port);
     
    	        // Ecoute infinie des requêtes des clients
    	        while(true){
    	        	System.out.println("Attente d'un nouveau client");
    	        	Socket client = serveur.accept();
    	        	client.setReuseAddress(true);
    	        	client.setSoLinger(true, constantes.LINGER_TIME);	        	
    	        	iaddr = client.getInetAddress() ; 
    	        	System.out.println("Connexion client détecté à partir de " + iaddr.getHostAddress());	            
    	            kProtoManager kp = new kProtoManager(client); <== c'est le thread (comme ceci il se lance bien)	            
    	        }
    	    }
    	    catch (Exception e){System.err.println(e);}
    	    finally{
    	    	try{
    	    		System.out.println("Serveur arrêter");
    	    		if (serveur != null) serveur.close();
    	        }
    	        catch (Exception e){System.err.println(e);}
    	    }
    	}
    avez-vous une idee ?

    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Il nous manque un bon morceau de code pour pouvoir tenter de voir ce qui ne va pas... en particulier tes classes kProtoManager (commançant par une minuscule: SCANDALE!!!) et Clients
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    en effet pour les majuscules ce n'est pas standard , comme je commence le java
    j'ai pas fait gaffe mais je ne peut plus le changer car ca me ferais plein de modif a faire, je ferais attention la prochaine fois, sinon pour CLient c'etait un exemple , en fait c'est kProtoManager.

    en gros quand je fais

    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
     
    kProtoManager thread = new kProtoManager(client);
    thread.start();
     
    ca ne fonctionne pas , par contre quand je fais
     
    kProtoManager kp = new kProtoManager(client);
    ca marche
     
    la declaration de kProtoManager est la suivante:
     public class kProtoManager extends Thread {
     
    et dans le run
    	public void run(){
    		try {
     
    le constructeur de kProtoManager est la suivante:
    public kProtoManager(Socket csock) {
    		try{
                this.service = csock;  
                this.start();
            }
            catch (Exception e){System.err.println(e);}
        } // !constructeur		
     
    evidemment porur la version que je n'arrive pas a lancer j'avais enleve le
    start() du constructeur.
    Merci.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par andromeda
    en effet pour les majuscules ce n'est pas standard , comme je commence le java
    j'ai pas fait gaffe mais je ne peut plus le changer car ca me ferais plein de modif a faire, je ferais attention la prochaine fois, sinon pour CLient c'etait un exemple , en fait c'est kProtoManager.
    Un IDE comme eclipse te permet de faire des renommages de classes ou de variables, sans douleur et de facon fiable.
    Reecrire les parties d'un projet qui sont mal ecrites, ca fait partie du cycle de vie des projets. C'est important d'en avoir conscience, et de savoir que si tu ne le fais jamais, ton projet ne sera pas maintenable.


    Citation Envoyé par andromeda
    en gros quand je fais

    kProtoManager thread = new kProtoManager(client);
    thread.start();

    ca ne fonctionne pas , par contre quand je fais

    kProtoManager kp = new kProtoManager(client);
    ca marche
    Ca marche ou ca fonctionne pas, dans la description d'un probleme, c'est trop vague.
    Il faut par exemple preciser si au debugger tu arrives a entrer dans la methode run (en mettant un point d'arret), ou si lorsque tu ajoutes une trace dans la methode run, elle s'affiche dans la console ou pas.


    Citation Envoyé par andromeda
    la declaration de kProtoManager est la suivante:
    public class kProtoManager extends Thread {

    et dans le run
    public void run(){
    try {

    le constructeur de kProtoManager est la suivante:
    public kProtoManager(Socket csock) {
    try{
    this.service = csock;
    this.start();
    }
    catch (Exception e){System.err.println(e);}
    } // !constructeur

    evidemment porur la version que je n'arrive pas a lancer j'avais enleve le
    start() du constructeur.

    Merci.
    A priori, il n'y a pas de raison pour que run ne soit pas appelée. Il faudrait plus de précisions et des traces.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lancement d'un thread par boite de dialogue
    Par alexadvance dans le forum MFC
    Réponses: 13
    Dernier message: 02/10/2007, 14h54
  2. Lancement d'un THREAD en VBA ?
    Par Mamat31 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/08/2007, 14h37
  3. difference de lancement d'un thread
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/07/2007, 11h01
  4. Réponses: 3
    Dernier message: 05/03/2007, 09h26
  5. Suppression et lancement d'un thread en java
    Par noutnout53 dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 13/03/2006, 11h05

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