Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lire toute les lignes d'un BufferedReader

    20 octobre 2016 à 18:08:39

    Bonjour,

    Voila j'ai un petit soucis, quand j'essaye d'afficher toutes les lignes d'un bufferedReader, et bien la boucles qui me permet d'afficher ces lignes ce bloque a la dernier ligne pour je ne sais quel raison 

    Pour mieux comprendre voici mon code:

    InetAddress adresseIp = InetAddress.getByName("192.168.1.189");
    		Socket socket = new Socket(adresseIp, 554);
    
    		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
    		PrintStream out = new PrintStream(socket.getOutputStream());
    
    		out.println("OPTIONS rtsp://192.168.1.189:554/ch01.264 RTSP/1.0\r\nCSeq: 1\r\nUser- Agent: Mozilla/5.0\r\n");
    
    		String line = null;
    		while ((line = in.readLine()) != null) {
    			System.out.println(line);
    		}

     Et voici le resulat:
    RTSP/1.0 200 OK
    CSeq: 1
    Public: OPTIONS, DESCRIBE, SETUP, PLAY, GET_PARAMETER, SET_PARAMETER, TEARDOWN
    Et donc la le programme se bloque a la fin au println (normalement le message se termine par "\r\n\r\n")

    Voila je me sens vraiment bête de venir avec un problème comme ça mais la je ne comprend pas du tout pourquoi  :/
    Merci d'avance pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 octobre 2016 à 18:28:43

      Ton soucis c'est que java traites "\r" et "\n" :

      "\n" = début d'une nouvelle ligne

      "\r" = fin d'une ligne.

      Alors, ce qu'il faut faire, c'est de les bloquer.

      Je te propose de test en rajoutant :

      System.out.printlm("téléchargement du fichier terminé !");

      Et normalement, ça devrai afficher :

      RTSP/1.0 200 OK
      CSeq: 1
      Public: OPTIONS, DESCRIBE, SETUP, PLAY, GET_PARAMETER, SET_PARAMETER, TEARDOWN
      
      
      téléchargement du fichier terminé !

      Non ?

      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2016 à 18:41:20

        Non ça ne change rien. Mais par contre je rectifie, le problème viendrait plus de la condition du while.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 octobre 2016 à 18:55:43

          Alors, appelles le debugger !

          -
          Edité par Anonyme 20 octobre 2016 à 18:57:21

          • Partager sur Facebook
          • Partager sur Twitter
            20 octobre 2016 à 19:53:03

            Deja fais, mais je viens de me rendre compte d'un truc, le code est fonctionnel mais lorsque "line = in.readLine()" devient égal a "null" et bien il y a comme un temps de chargement qui dure environ plus d'une minute avant que le programme passe à autre chose....
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              20 octobre 2016 à 20:03:51

              Après ta boucle, essaies :

              in.close();



              • Partager sur Facebook
              • Partager sur Twitter
                20 octobre 2016 à 20:06:23

                Je ne peut rien faire après la boucle puisque je n'en sors pas je reste bloqué pendant une minute a mon while avant de comprendre que la valeur est null...
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  20 octobre 2016 à 20:49:12

                  :-° Dans tout les cas, ta boucle est juste (C'est la même que dans l'un de mes très anciens projets;))

                  Alors, d'abords, essaies de mettre juste avant la boucle :

                  out.close();

                  Et si ça ne fonctionne toujours pas... Essaies d'enlever la dernière linge de ton fichier et regarde se que ça fait...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 octobre 2016 à 21:21:13

                    Non ça ne fonctionne pas, je ne sais plus trop quoi faire ... Le problème c'est que je ne peut pas trop enlever la dernier ligne, je reçois juste un paquet RTSP. J'ai même accès au paquet en hexa et je ne vois pas d'ou ça peut venir
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Lire toute les lignes d'un BufferedReader

                    × 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