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 :

Socket probleme bloquage readLine()


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Par défaut Socket probleme bloquage readLine()
    Bonjour à tous,

    Pour un projet en licence, je dois réaliser une application java.
    Le principe est le suivant:

    Un serveur (multithreadé), X clients.

    Le serveur est a l'écoute de tous les clients, et un client peut envoyer un message a un autre client.

    Donc dans chaque thread, on a un PrintStream pour ecrire au client et un BufferedReader pour l'écouter

    Voici un bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    while (true) {
    	try {	
    		String requete = litSock.readLine();
    		traitementRequete(requete);
            }
    	catch(IOException e) {
    		System.out.println("Probleme avec le client");
    		return;
    	}
    }
    Dans le serveur je stock tous les clients avec leur printstream et bufferedReader respectif dans un MAP. Et dans la méthode 'traitementRequete', je récupère
    le printStream du client auquel on veut envoyer un message et je fait un println(message) sur cette printStream.

    le probleme c'est que la socket du client auquel on veut parler est rester dans la boucle principal bloqué sur le readLine(), et que le println(message) bloque.

    Une fois que l'on débloque le readLine(), le client recoit bien le message mais pas avant, Hors on me demande un dialogue asynchrone, donc le client doit pouvoir recevoir des message a tous moment.

    Et c'est la que je suis perdu ! Comment faire pour que le message soit recu immédiatement par un client meme si il est blocké sur le readLine () ... ???


    Merci pour votre aide.


  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Faire l'attente du readLine dans un nouveau thread.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Par défaut
    Ouai j'ai deja tenter, mais le probleme était le meme.

    En fait j'ai une solution qui marche c'est ouvrir une deuxieme socket qui permettrai de faire de la communication asynchrone, mais ce n'est pas dans le protocol donnée par le prof


  4. #4
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Autant que je puisse comprendre le problème tel que tu l'expliques, la piste donnée par com est bonne. Regarde mieux ton code, il doit y avoir une erreur quelque part.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Par défaut
    Bien, j'ai trouvé le probleme apres des heures et des heures a me tapper la tete sur le clavier, J'utilisais un serverSocketChanel pour le coté interruptible des chanel, en essayant avec un serverSocket ca marche nikel, Mais bon c'est plus interruptible arff !!! c'est mieux que rien.


    Merci quand meme

Discussions similaires

  1. [Socket]Probleme avec CLOSE_WAIT
    Par Raton dans le forum Développement
    Réponses: 4
    Dernier message: 04/01/2017, 09h28
  2. [flux/socket]probleme client
    Par xelif dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 12/01/2014, 21h35
  3. [Socket] Probleme entre un Client C et un serveur JAVA
    Par bpy1401 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 28/02/2006, 08h40
  4. [socket] Probleme avec connect
    Par sorry60 dans le forum Réseau
    Réponses: 12
    Dernier message: 16/11/2005, 22h01
  5. [socket] probleme d'envoi de fichier
    Par soulhouf dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 21/10/2005, 16h15

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