Application externe lancé et traces non affichés en temps réel
Jaldo
Messages postés3Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention 6 juillet 2009
-
3 juil. 2009 à 09:53
Jaldo
Messages postés3Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention 6 juillet 2009
-
6 juil. 2009 à 11:39
Bonjour,
Merci pour l'aide que peut apporter celui qui lit ce message.
G un serveur écrit en C sous linux, je lance ce binaire à partir d'une application Java, forcément tant que le server tourne, ce process a la main et l'application Java est bloqué par la méthode waitFor().
Je lance un client en Parallèle dans un terminal sous linux et j'envois des commandes au serveur mentionné ci-haut, normalement dans la console Java, je dois voir apparaitre les traces du serveur puisque je dirige stdout vers la console Java, sauf que des paquets de traces apparaissent toutes les 60 secondes à peu près et donc mon application est à jeter à la poubelle puisque le but c'est d'envoyer des commandes au serveur et voir en temps réel ses traces.
Merci de ne pas écrire des réponses genre utilise la classe Process ou Runtime et InputStream , tout ça je maitrise , le probleme est que les traces du serveur ne s'affichent pas en temps réel dans la console Java.
Merci vous votre aide...
A voir également:
Application externe lancé et traces non affichés en temps réel
Jaldo
Messages postés3Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention 6 juillet 2009 3 juil. 2009 à 11:03
Bonjour DARKSIDIOUS
le code est ci-dessous:
public class StreamCatcher extends Thread{
private BufferedReader streamReader = null;
public StreamCatcher(InputStream iStream){
InputStreamReader iStreamReader = new InputStreamReader(iStream);
streamReader = new BufferedReader(iStreamReader);
}
public void run(){
String line = null;
try{
while ( (line = streamReader.readLine()) != null) {
System.out.println(line);
}}
catch(Exception e){
e.printStackTrace();
}
streamReader.close();
}}
Dans mon Main , l'appel se fait de la façon suivate :
voila le code , si je lance le serveur dans un terminal sous linux et que jenvoie des commandes via le client lancé dans un autre terminal , g des traces dans le terminal du client tout le temp ( en fait c un serveur qui reçoit un flux TV et qui traite les tables du Flux).Sauf que kand je lance mon serveur à partir de l'appli Java vec le code plus haut , les memes traces apparaissent mais par paquet , c a dire chak x temps j'ai un paket de traces qui s'affichent d'un seul coup dans la console de mon environnement de développement Java, pour info il s'agit de NetBeans sous Linux.
Merci pour votre aide....
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 4 juil. 2009 à 08:14
Salut,
Je ne sais pas comment fonctionne exactement le BufferedReader mais son principe c'est qu'il bufferise les données afin d'optimiser les lectures. Et peut-être que le soucis vient de là : la lecture ne se déclencherai que lorsqu'il aurait suffisament de données à lire... Ce qui peut provoquer des lags et expliquerait les paquets de trace et non des traces en continu...
Essaye de n'utiliser que le InputStreamReader (sans passer par le BufferedReader donc), histoire de voir si ca ne viendrait pas de cà.