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

Collection et Stream Java Discussion :

Passage d'un entier dans un stream


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Par défaut Passage d'un entier dans un stream
    Bonjour à tous,

    J'envoie des objets entre une classe cliente et une classe serveur via des ObjectIntput/OutputStream. Tout se passe bien, mais pas pour les entiers...

    Voici le bout de code côté client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Socket s = new Socket("127.0.0.1",port_creation);
    ObjectInputStream in = new ObjectInputStream(s.getInputStream());
     
    int correct = in.read();
    System.out.println(correct);
    ... Et du côté Serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); 
    int correct = -1;
    out.write(correct);
    En sachant qu'il n'y a aucun problème pour le transfert d'objets (j'utilise les méthodes out.writeObject(monObjet); et monObjet = in.readObjet(); .

    Je vois pas où ça va pas. Si vous pouviez m'aider ce serait un sérieux coup de pouce.

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Alors transmet un Integer au lieu d'un int
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Par défaut
    Merci pour la réponse, j'ai essayé et voilà ce que ça a donné :

    dans le code serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println(correct);
    out.writeObject(correct);
    Cela me donne la valeur 1 affichée dans la console,

    dans le client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Integer correct = (Integer) in.read();
    System.out.println(correct);
    Ce qui m'affiche -1... Dans le code serveur, la variable correct est initialisée à -1, puis passée à 1 ou 0 selon les résultats des tests effectués. En l'occurence, le test fait passer la variable à 1 (vu que je l'affiche avant de l'envoyer)...

    Que puis-je faire pour résoudre mon problème ?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Côté serveur, tu transmets quoi ? Un int ou un Integer ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Par défaut
    dinobogan :

    J'envoie un Integer.


    unknow0 :

    Oh merci beaucoup ! Je vais essayer sur le champ. Mais dans la javadoc, c'est écrit que la valeur retournée par read() est un int... Mais je vais voir ça !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Par défaut
    Ca a pas l'air de marcher... Le programme bloque au débugguage lorsque le serveur écrit l'entier. Le client reste sur la lecture en attendant l'entier, alors que le serveur considère que tout s'est bien passé et essaye d'executer les étapes suivantes (le client est sensé envoyer au serveur une chaine, et le serveur est bloqué sur la lecture).


    Code coté serveur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /*R*/String reponse = (String) in.readObject();
    int correct = -1;
    try{Manager.valider(reponse, ids.getNom(), ids.getPrenom(), ids.getId());correct = 1;}
    catch(ReponseIncorrecteException a){correct = 0;}
    finally{
    System.out.println(correct);
    /*W*/out.writeInt(correct);
    	}
    Code coté client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String reponse = Keyboard.readString();
    /*W*/out.writeObject(reponse_secrete);
    /*R*/int correct = in.readInt();

  7. #7
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par wizzy Voir le message
    Mais dans la javadoc, c'est écrit que la valeur retournée par read() est un int...
    La javadoc dit surtout que cette fonction lit un octet de données ("Reads a byte of data.").

    Le même souci a été posté il y a à peine neuf jours. Le titre du topic était d'ailleurs pour le coup tellement explicite ("[Socket] Simple envoie d'entiers") que j'ai du mal à croire qu'une recherche sur le forum ne t'aie pas retourné ce topic.

  8. #8
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    les method read() et write ecrive un octet et non un entier.
    pour ecrire des int utilise plutot les method writeInt et readInt

    Cordialement

Discussions similaires

  1. Sélectionner tous les entiers dans une fourchette
    Par ludo.guy dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/07/2004, 09h15
  2. Réponses: 4
    Dernier message: 23/06/2004, 09h51
  3. [MFC] Passage d'une structure dans une method
    Par KPitN dans le forum MFC
    Réponses: 5
    Dernier message: 18/06/2004, 10h11
  4. [XSL] Tester si la valeur est un entier dans un xml
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/07/2003, 04h35
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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