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 :

[java.nio+Serializable] Comment peut on sérialiser sur une socket non bloquante?


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Points : 8
    Points
    8
    Par défaut [java.nio+Serializable] Comment peut on sérialiser sur une socket non bloquante?
    Bonjour tout le monde,

    Alors voila, j'aimerais réaliser un serveur qui permettrais a des clients java d'obtenir des objets sérialiser que le serveur est allé cherchez sur une base de données local.

    Coté serveur, j'ai réaliser un petit serveur en socket non bloquante a l'aide de java.nio . Cependant, lorsque je veux sériasliser un objet et passer en le flux de sortie en paramettre, j'ai une belle exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.nio.channels.IllegalBlockingModeException
    Voici le bout de code incrimminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ObjectOutputStream outObj = new ObjectOutputStream(clientSock.socket().getOutputStream());
    Quelqu'un aurais t il une idée?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    Tu as bien le flag d'écriture quand tu enregistres le channel client au selector ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // ...
    clientChannel = serverSocketChannel.accept();
    // ...
    clientChannel.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE, null);
    OP_READ pour pouvoir lire à partir de ce channel et OP_WRITE pour pouvoir écrire.

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Non, j'ai juste mis le READ.

    Aprés correction avec le code que tu m'as donné, j'ai toujours la meme erreur....

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    Ok alors laisse le rajout et dis moi si tu fais bien un "selectionKey.isWritable()", avant d'écrire ?
    Car enfaite tu ne peux pas écrire n'importe quand, il me semble.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/12/2012, 12h16
  2. Java nio : TimeOut sur une socket d'un selector
    Par souihli dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 16/10/2008, 10h26
  3. [.NET 3.5] Comment peut-on developpez sur iphone ?
    Par ikeas dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 28/09/2008, 16h31
  4. Comment définir un timeout sur une socket PHP ?
    Par N3odyme dans le forum Langage
    Réponses: 7
    Dernier message: 07/05/2006, 23h04
  5. [VB.NET] Comment peut-on sérialiser une Collection ?
    Par Jabbal'H dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/03/2006, 21h24

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