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

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 468
    Points : 26 883
    Points
    26 883
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par Clemme2 Voir le message
    Justement le System.out.println(msg) n'affiche rien lorsque le client attend à l'infini. En revanche, lorsque je commente les lignes du client attendant pour récupérer le message, il l'affiche (bien sur le serveur).
    Dans ce cas, c'est sûr, le client ne recevra jamais le message et sera bloqué. Le problème est donc ailleurs. Et l'exécutable externe, il est bien appelée, il se termine bien et avec un retour de 0 ? tu as essayé de mettre un System.out.println() de la valeur retournée par waitFor ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #22
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 16
    Points : 2
    Points
    2

    Par défaut

    ça ne marche toujours pas :/

    En fait il n'exécute pas non plus le System.out.println(pr.waitFor()); dans le if.

    On dirait que dans ce cas, il n'arrive pas à exécuter le programme.

  3. #23
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 16
    Points : 2
    Points
    2

    Par défaut

    Je crois avoir trouver comment résoudre le problème grâce à : https://blog.developpez.com/adiguba/...ilder_redirect
    Ce serait en fait un problème de buffer.

    Je vais essayer de comprendre comment ça se règle.

  4. #24
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 16
    Points : 2
    Points
    2

    Par défaut

    Je suis désolé de vous redéranger, mais j'ai eu beau mettre dans un thread différent le process et tester de rediriger les flux, ça ne marche toujours pas...

    Si quelqu'un a une idée, je serais preneur ^^

    Merci d'avance

  5. #25
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    7 013
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 7 013
    Points : 9 694
    Points
    9 694

    Par défaut

    Tu mélanges trop de concept au sein d'une même classe et cela rend ton test difficile.

    En rappatriant ton code chez moi, je constate que ton point de bloquage n'a aucun rapport avec la partie réseau, ni la partie multithread;
    C'est uniquement lié l'appel exécutable python ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    				String pythonScriptPath = ("data/test.py");
    				String[] cmd = new String[3];
    				cmd[0] = "python";
    				cmd[1] = pythonScriptPath;
    				cmd[2] = "11";
    				Runtime rt = Runtime.getRuntime(); //exécution d'un script python test
     
    				BufferedReader bf2=null;
     
    				Process pr = rt.exec(cmd);
    				if(pr.waitFor()==0) {
    					bf2 = new BufferedReader(new FileReader("data/newfile.txt")); //pour l'instant on récupère ce que renvoie le fichier python dans un fichier texte
    					String msg = bf2.readLine();
    					bf2.close();
    Sort ce code dans une méthode utilitaire à côté, et teste là unitairement.


    À noter que tout ceci est bien compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	FileOutputStream fOS = new FileOutputStream("lefichier.txt");
     
    				int n = inS.read(buf);
    				while(n!=-1) {
    					fOS.write(buf,0,n);
    					fOS.flush();
    					n=inS.read(buf);
    				}
     
    				fOS.close();
    Utilise apache commons io avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    			InputStream inS = socket.getInputStream();
     
    			try(OutputStream fOS = new FileOutputStream(new File("lelien.txt"))) {
    				IOUtils.copy(inS, fOS);
    			}
    Je ne répondrai à aucune question technique en privé

  6. #26
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 16
    Points : 2
    Points
    2

    Par défaut

    Bonjour, merci de m'avoir répondu.

    Le soucis est que lorsque je teste cette méthode unitairement, cela fonctionne très bien.
    Cela marche aussi quand le client n'attend pas de réponse après avoir envoyer l'image. C'est lorsque le serveur doit envoyer que cela ne marche plus.

  7. #27
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 16
    Points : 2
    Points
    2

    Par défaut

    Bonjour,

    Merci pour votre aide.
    J'ai finalement résolu le problème qui était en fait du au transfert de l'image. Je ne pouvais alors plus envoyer de message... Pour résoudre ce problème, j'ai envoyé la taille de l'image et ai vérifié que lors de la copie de l'image, on ne dépassait pas sa taille.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XSLT] Problème de ligne vide dans le flux de sortie
    Par Guillaume.chatel dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 07/02/2007, 09h57
  2. Flux de sortie : ob_start + header
    Par ToxiZz dans le forum PHP & MySQL
    Réponses: 2
    Dernier message: 13/12/2005, 23h56
  3. problème flux rss
    Par K4trix dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/11/2005, 21h14
  4. Awk - changer le flux de sortie
    Par Longrais dans le forum Linux
    Réponses: 1
    Dernier message: 16/08/2005, 17h11
  5. Réponses: 11
    Dernier message: 13/10/2004, 00h58

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