Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme en récupération de flux entrée/sortie d'un socket

    21 juin 2009 à 17:49:55

    Salut..

    J'ai un Hashtable<String, Socket> nommé userList.

    je veux récupérer les entrées/sorties d'un Socket de userList mais le programme bloque.

    voilà le code

    public void run()
    		{
    			System.out.println("Serveur dit : obtenir les flux des SOURCE et DESTINATION");
    			
    			Socket socketSrc = userList.get(src);
    			Socket socketDest = userList.get(dest);
    			
    			try {
    				// le programme bloque sur l'instruction suivante et ne signaler aucune erreur
    				
    				// Flux de SOURCE
    				ObjectInputStream entrSrc = new ObjectInputStream(socketSrc.getInputStream());
    				
    				// Flux de DSTINATION
    				ObjectOutputStream sortDest = new ObjectOutputStream(socketDest.getOutputStream());
    				
    				Object obj = entrSrc.readObject();
    				
    				if (obj.getClass().getSimpleName().equals("Message"))
    				{
    					Message m = (Message)obj;
    					System.out.println("source=" + m.getUserSource() +
    							",  dest=" + m.getUserDesination() + 
    							",  message=" + m.getMessage());
    				}
    				
    				sortDest.writeObject(obj);
    
    				System.out.println("le serveur a envoyer la demande au " + dest);
    				
    			} catch (IOException e) {e.printStackTrace();}
    			catch (ClassNotFoundException e){e.printStackTrace();}
    		}
    


    Je veux savoir c'est quoi le problème s'il vous plait..

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2009 à 5:01:29

      Si il ne t'indique rien c'est qu'il ne s'agit ni d'une IOException, ni d'une ClassNotFoundException. Ajoute un catch pour les Exception.

      A mon avis c'est une NullPointerException, renvoyée par socketSrc.getInputStream().
      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2009 à 14:40:16

        J'ai ajouté un bloc catch avec (Exception e) mais aucune erreur. et avant le Try j'ai mis un System.out.println(socketSrc.toString()); pour tester l'object, et il m'affiche l'état du socket, donc je pense pas qu'il y a NullPointerException.

        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2009 à 14:50:52

          Donc le programme ne s'exécute pas entièrement, mais il n'y a pas d'erreur... C'est la première fois que je vois ça ^^ .

          EDIT : tu utilise Eclipse ?
          • Partager sur Facebook
          • Partager sur Twitter
            22 juin 2009 à 15:04:53

            Ok, alors je sais vraiment pas, normalement au moindre problème Eclipse envoie pleiiin d'erreurs.
            • Partager sur Facebook
            • Partager sur Twitter
              22 juin 2009 à 15:12:19

              Vaut mieux attendre l'avis de quelqu'un qui manipule ça souvent, mais à mon avis ton readObject() ne return jamais car il attend en permanence que quelque chose lui soit envoyé.

              Y'a déjà eu le même problème sur le forum une petite recherche peut-être ? ;)
              • Partager sur Facebook
              • Partager sur Twitter
                22 juin 2009 à 16:14:17

                La classe ServerSocket elle est instanciée a quel niveau ?
                Au début tu es en train d'instancier une socket d'une autre socket c'est inutile étant donné quelle est déjà dans la collection :euh:
                Tu ferais mieux de passer un peu plus de code concernant la déclaration de la socket et ServerSocket, merci d'y remedier
                • Partager sur Facebook
                • Partager sur Twitter

                Probleme en récupération de flux entrée/sortie d'un socket

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown