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

Langage Java Discussion :

[Serversocket] sortir proprement d'une boucle while(true)


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut [Serversocket] sortir proprement d'une boucle while(true)
    Bonjour,

    J'ai une petite application serveur qui fait office de serveur de socket. A son initialisation, j'ouvre une base de données HSQLDB. Et pour bien faire, je dois la fermer proprement quand je clos mon programme en faisant stop dans netbeans en l'occurence.

    Ci-dessous mon bout de code grosse modo. Le problème c'est que je suis dans la boucle while(true) pour attendre des connexions au serveur de socket et je ne sais pas comment jouer la partie qui est dans finally quand je fais stop dans netbeans, ou que je killl serveur ou que je ferme la fenêtre dos qui le lance.

    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
        try
        {
          database = new Database();
     
          ss = new ServerSocket(port); // ouverture d'un socket serveur sur port
     
          while (true) // attente en boucle de connexion (bloquant sur ss.accept)
          {
            new MarbleousThread(ss.accept(),marbleousServ); // un client se connecte, un nouveau thread client est lancďż˝
          }
        }
        finally {
            ss.close();
            Database.statement = Database.connexion.createStatement() ;
            Database.statement.executeUpdate("SHUTDOWN");
        }

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut
    Je viens de trouver une piste par hasard en cherchant autre chose :

    http://java.sun.com/javase/6/docs/ap...va.lang.Thread)

    Je testerai ça demain, je viendrai mettre un petit post ici si ça répond à ma question.

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    Met une variable booléenne dans ton while(), qui lorsqu'elle sera a false, ton application sortira de ta boucle.

    Si jamais ta thread est bloqué dans l'attente d'un client, tue le serveur et la thread sera débloqué et tu sortira de ta boucle.

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut
    Je suis d'accord sur la théorie mais en pratique comment on intercepte le kill pour changer la valeur du booléen.

    A priori pas besoin de cette technique avec la fonction que j'ai linké dans mon deuxième post. A suivre demain.

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    Suffit d'avoir une fonction qui change le booleen d'abord et kill la socket après, comme sa après avoir tué la socket, il teste la condition de la boucle et hop il sort !

    C'est une technique que j'ai apris en C++ et cela fonctionne encore mieu en java !

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut
    On s'est mal compris je pense. Je parle d'un kill au niveau unix par exemple. Ou bien dans un environnement Netbeans quand on appuie sur le bouton qui stoppe purement et simplement l'exécution. Mon problème est de trouver comment intercepter cet évènement dans le code pour tout arrêter proprement.

    Pour le reste, ce n'est pas un problème d'arrêter proprement mon serveur de socket.

Discussions similaires

  1. Sortir d'une boucle while
    Par dahu007 dans le forum Langage
    Réponses: 14
    Dernier message: 15/06/2008, 17h33
  2. comment sortir d'une boucle while d'un Iterator
    Par solawe dans le forum Langage
    Réponses: 6
    Dernier message: 18/03/2008, 13h46
  3. Sortir d'une boucle while
    Par chris81 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/01/2008, 11h50
  4. sortir prématurément d'une boucle while
    Par piotrr dans le forum VB.NET
    Réponses: 4
    Dernier message: 05/08/2007, 11h21
  5. Probleme pour sortir d'une boucle while
    Par aikinhdo dans le forum Langage
    Réponses: 0
    Dernier message: 27/07/2007, 15h01

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