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 :

[ServerSocket] interrompre la methode accept


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut [ServerSocket] interrompre la methode accept
    J'ai un probleme qui a l'air tout con ... j'ai un serveur ... pour ca, je cree un Serversocket sur le port a ecouter et je lance la methode accept()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    server = new ServerSocket(PORT) ;
    while( serverIsOn )
    {
           Socket client = server.accept() ;
           // ....
    }
    Bref, c'est assez simple ... mais mon probleme est maintenant d'interrompre l'attente ... par exemple, il se peut que je ne souhaite plus accepter de connexion entrante a partir d'un moment. Pour l'instant, je change un boolean et je sort par exemple de la boucle... mais bon, une fois que je suis dans la methode accept(), c'est mort, ma methode ne marche pas comme je voudrais ... Faut-il que je mette mon serveur dans un thread est que j'appele les methodes wait ou interrupt ??? Y a-t-il un methode plus propre ?? J'ai souvent eu des galeres avec la methode interupt des thread qui avait l'air de fonctionner aleatoirement. Comment faire alors ?

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 68
    Par défaut
    Depuis un autre thread, il faut juste fermer le serveur par server.close().

    Il faudra forcément que tu mettes en place cet autre thread, ce serait-ce que pour recevoir la demande de fermeture.

  3. #3
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    ok, je te remercie pour ta reponse, je n'y avais tout simplement pas pense... Mais maintenant, j'ai une seconde question : lorsque tu fais un server.close() alors que dans un autre thread du fait server.accept(), que ce passe-t-il exactement au niveau du second thread ? une exception est retournee ? IOException ? Je viens de lire la javadoc mais ce n'est pas vraiment clair ... je souhaite donc avoir confirmation de ce que je semble avoir compris.

    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 68
    Par défaut
    Le thread sur accept reçoit, si l'on peut dire, une IOException, pour cause de fermeture du serveur de socket ; il est donc réveillé. Le thread qui a fait le close continue son petit bonhomme de chemin tranquillement.

  5. #5
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    ok, je te remercie. c'est donc bien ce que je pensais.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/02/2010, 16h31
  2. [swing][socket]méthode ServerSocket.accept() bloquante?
    Par the_ugly dans le forum EDT/SwingWorker
    Réponses: 6
    Dernier message: 07/11/2005, 11h15
  3. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31
  4. Methode de drcherche a l,interieur de basse de donner texte
    Par philippe V dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 03/12/2002, 10h20
  5. [VB6] Interrompre toutes procédures
    Par lutin_vert dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/09/2002, 11h39

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