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 :

event sur des streams de socket


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingenieur
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Par défaut event sur des streams de socket
    bonjour,

    Dans tous les exemples que j ai pu trouver a propos des sockets et des exemples d appli client/serveur le client consiste une un boucle infini lisant le flux du socket.
    Dans mon cas j aurais voulu que le client execute un code en permanence et qu il n aille lire le flux du socket que si le serveur ecrit quelque chose dedans, j ai donc chercher si il n y avait pas moyen de faire generer des events a un stream de façon a ce que mon client soit informe via un listener de l arrivee de donnees mais je n ai rien trouve...
    Une autre solution serait d avoir un thread executant le code, et un thread ecoutant le stream via la boucle infinie de lecture mais je trouve cette solution plus "lourde"....
    est ce que quelqu un aurait une autre idee ? ou connaitrait un moyen d etre "sensitif" sur le input stream du socket via des events ?

    Merci d avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    La lecture sur le socket se fait avec une méthode read, et cette dernière est bloquante, donc tu ne rentrera pas dans ta boucle tant qu'il n'y aura pas de données envoyées par le serveur. Reste juste à modifier un booléen quand tu rentres dans cette boucle pour savoir si tu effectues tes tâches annexes ou non.


    Il existe sinon une classe StreamListener dans le package JBoss mais je ne sais pas si elle correspond à ce que tu cherches.

  3. #3
    Membre confirmé
    Profil pro
    Ingenieur
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Par défaut
    Citation Envoyé par Napalm51 Voir le message
    La lecture sur le socket se fait avec une méthode read, et cette dernière est bloquante
    C est justement mon probleme que la lecture soit bloquante !!

    Citation Envoyé par Napalm51 Voir le message
    tu ne rentrera pas dans ta boucle tant qu'il n'y aura pas de données envoyées par le serveur.
    comment savoir a l avance que le serveur m aura envoye ou non des donnees et savoir si je rentre dans ma boucle ou pas ? c etait justement pour etre notifie de l arrivee de donnees que j esperai un systeme d event

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Si tu veux pas de blocage, il faut mettre la lecture dans un thread.

  5. #5
    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
    Il y a à mon avis une piste à explorer du coté de java.nio.channels.

    Tu peux creer un SocketChannel en mode non bloquant, et utiliser un Selector pour être informé de l'arrivée de données.

    Grosso modo, ca fonctionne comme le select ou le poll en C.

    Tu as une explication plus complète ici

Discussions similaires

  1. [MooTools] Event sur des lignes de tableau
    Par Bouffe dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 08/01/2012, 16h40
  2. Ordre des event sur un control
    Par olibara dans le forum C#
    Réponses: 4
    Dernier message: 25/01/2010, 22h56
  3. Gestion des event sur un menu
    Par Antoine_935 dans le forum wxPython
    Réponses: 5
    Dernier message: 10/09/2009, 12h01
  4. C -> Perl : Lecture ecriture sur des Sockets
    Par caesarvanou dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 05/05/2006, 11h20
  5. Chat basé sur des sockets php5
    Par javhost dans le forum Développement
    Réponses: 1
    Dernier message: 12/07/2005, 16h21

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