Partage
  • Partager sur Facebook
  • Partager sur Twitter

desktop.browse(..) dans projet Client/Serveur

Sujet résolu
    19 janvier 2020 à 14:19:24

    Bonjour à tous,

    J'ai récupéré un vieux programme Java Client/Serveur que j'avais fait quand j'étais étudiant et qui ne fonctionnait pas.

    J'ai donc essayé de le faire marcher et jusqu'à maintenant, tout se passait bien, aucun problème au niveau de la connexion. Ensuite, j'ai essayé de lancer certaines opérations à partir du serveur afin qu'elles soient réalisées par le client. La aussi je n'ai pas eu de soucis, sauf pour l'une d'elle..

    En effet, j'essaie de lancer une recherche sur internet via la machine du client, sauf que rien ne se lance.. Pire même, le programme s'arrête alors qu'il est censé être dans une boucle. Je vous met le code :

    Client :

    o=10;
    while (o != 0) { /*je réalise différentes opérations en fonction de la valeur du o */ o = is.read(); .... if (o == 4 || o == 5 || o == 6) { System.out.println("ça passe"); byte[] reception2 = new byte[1000]; is.read(reception2); /*je récupère ma recherche */ String texte2 = new String(reception2); System.out.println(texte2); final Desktop d = Desktop.getDesktop(); System.out.println("ça passe 2"); d.browse(new URI(texte2)); System.out.println("ça passe 3"); }
       

    Je vous met les résultats dans la console :

    ça passe
    la recherche
    
    ça passe 2

    Et à ce moment la, le programme s'arrête sans que "o" ne vaille 0.

    Je précise aussi qu'aucune erreur n'apparaît dans la console, ce qui aurait éventuellement pu m'aider.

    On bloque donc sur la commande :

    d.browse(new URI(texte2));

     Sans que rien ne se lance.

    Je vous met maintenant le code du côté du serveur :

    Serveur:

    while (i != 0) {
    ...
       if (ii.equals("6")) {
       i = 6;
       os.write(i); /* J'envoie la commande à réaliser au client */
       System.out.println("Ecrire la recherche:");
       final String recherche;
       final String recherche = keyboard.readLine();
       byte[] message3 = new byte[recherche.length()];
       message3 = recherche.getBytes();
       os.write(message3); /*J'envoie le message */
      /*final Desktop d = Desktop.getDesktop();
      d.browse(new URI(recherche));*/
                        }
    ...
    }

    Comme vous pouvez le voir, je test la même commande (actuellement en commentaire) quand je suis côté serveur et pour le coup, elle marche !

    Du coup, j'arrive pas à comprendre quel est le problème sachant que toutes autres opérations fonctionnent plutôt bien.

    Si vous avez une solution, je suis preneur !

    Merci d'avance

    Edit :

    J'ai trouvé la solution.

    le message envoyé faisant 1000 bytes, j'avais une chaîne de caractère avec un nombre très conséquent d'espaces à la fin de celle-ci.

    J'ai utilisé la fonction trim() pour les enlever et ça marche.

    -
    Edité par Mathb13 19 janvier 2020 à 21:54:19

    • Partager sur Facebook
    • Partager sur Twitter

    desktop.browse(..) dans projet Client/Serveur

    × 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