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 :

[Serveur/Client] ObjectInputStream -> Lire des données envoyés


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Points : 142
    Points
    142
    Par défaut [Serveur/Client] ObjectInputStream -> Lire des données envoyés
    Bonjour,
    je suis entrain de programmer une application de chat client/serveur . J'ai fait une version avec un simple client qui peut se connecter au serveur (qui marche ) Et je veux maintenant faire cette application pour pouvoir connecter plusieurs clients simultanément (un thread pour chaque client connecté : un gestionnaire de client) .

    Bon voilà comment ça se passe :

    J'ai le serveur qui attend une connexion d'un client :
    [ServerSocket serveur ; Socket connexion]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.connexion=this.serveur.accept();
    Ensuite j'instancie un Gestionnaire de client :
    [this : mon instance de Serveur ; this.connexion : Socket correspondant au client]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ConnexionClient(this,this.connexion);
    Dans ma classe ConnexionClient je commence par créer les flux d'entrée/sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public void creationFlux(){
    		try{
    			this.entree= new ObjectInputStream(this.connexion.getInputStream());
    			this.sortie= new ObjectOutputStream(this.connexion.getOutputStream());
    			this.sortie.flush();
    			this.srv.ajouterMessage("Le serveur à initialiser ses flux de communication avec le client.");
    		}
    		catch(Exception e){
    			Fenetre.warning("Impossible de créer les flux de communication.");
    		}
    	}

    Ensuite j'essaye de lire un message qui doit forcément arriver (en faite le client lors de sa connexion doit forcément envoyer un message qui contient son pseudonyme ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.pseudo=(String) this.entree.readObject();

    MAIS une exception est levée à ce moment ! Mon serveur qui accepte une unique connexion fait les mêmes étapes (un unique socket client et pas d'instanciation de connexionClient et la création des flux dans la classe Serveur ) et ça marche très bien . Savez-vous comment remedier à cela ?


    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    salut

    est ce que tu peux mettre le printStackTrace de l'exception que l'on y voit un peu plus claire ? parce que la c'est vague !

    (ainsi que le code client qui envoie le message provoquant une exception)

  3. #3
    Membre habitué
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Points : 142
    Points
    142
    Par défaut
    Problème résolu .
    ça venez du client car j'avait instancié deux fois un ObjectOutputStream !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2010
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    bon, pour crée un socket serveur qui accepté multi-utilisateur au même temps,
    il faut que doit être utiliser le thread voici un exemple qui permet de faire ça:

    public class Serveur
    {
    public static void main (String[] args)
    {
    try
    {
    ServerSocket ss=new ServerSocket(Port);
    while(true)/*attente d'une connexion d'un client*/
    {
    Socket sc;
    sc=ss.accept();
    /*Le serveur crée pour chaque client un thread*/
    Requette r=new Requette(sc);
    r.start();
    }
    }
    catch (IOException e)
    {
    System.out.println(e);
    }
    }
    }

    class Requette extends Thread
    {
    Socket sc;
    Requette(Socket sc)
    {
    this.sc=sc;
    }
    public void run()
    {
    //votre code pour les IO de java...

    }
    bon chance

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

Discussions similaires

  1. Lire des données sur un serveur windows
    Par Valkirion dans le forum Réseau
    Réponses: 1
    Dernier message: 21/01/2008, 17h06
  2. Comment lire des données d'un fichier XML à partir de java
    Par kamaldev dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 25/08/2006, 19h29
  3. Récuperation des données envoyées par Form en POST
    Par bobatel dans le forum Langage
    Réponses: 9
    Dernier message: 26/04/2006, 14h59
  4. [Excel] Lire des données de excel avec php
    Par Eisy dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/03/2006, 17h00
  5. CFile : comment lire des données
    Par romeo9423 dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2004, 19h10

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