Alors voilà, deux problèmes distincts, mais je suppose qu’il vaut mieux faire un post unique. Je vous expose ça:
Problème 1: je fais un pti programme Client-Serveur qui doit permettre de dialoguer entre une station Solaris (serveur) et plusieurs stations WINNT (clients donc). Les messages passent, pas de souci, j’échange des objects sans problème via sockets.
MAIS: je veux aussi pouvoir lancer une appli distante: depuis mon winnt dire à mon Solaris: « lance le programme zouzou ». Et là l’execution foire. Sous la forme suivante:
INFO: Action received: commandLine=a2t start (<< ça c'est mon logger qui me dit que la commande "a2t start" a été reçue)
java.io.IOException: a2t: not found
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:56)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:566)
at java.lang.Runtime.exec(Runtime.java:428)
at java.lang.Runtime.exec(Runtime.java:364)
at java.lang.Runtime.exec(Runtime.java:326)
at transmitter.Client.cmdExec(Comm.java:197)
at transmitter.Client.treatMessage(Comm.java:163)
at transmitter.Client.run(Comm.java:181)
Mon code qui exécute les processes ressemble à ça:
public void cmdExec(String cmdline) {
try {
String line;
Process p = Runtime.getRuntime().exec(cmdline);
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
Alors je sais pas trop comment lancer un process externe autrement moi… Je suis preneur de toute piste, parce que cette histoire m’emmerde bien… C’est un peu le but de mon prog de lancer une appli distante…
Problème 2:
Du coup sous mon winnt des fois je lance aussi un server (pour tester en local), enfin je compile et je lance… Mais justement ça foire. Mon programme server écoute sur un port, mais le problème c’est qu’une fois le programme fermé, l’écoute sur le port est pas fermée (j’ignore pourquoi) et du coup quand je compile une deuxieme fois, il plante à l’écution, une jolie: java.net.BindException: Address already in use: JVM_Bind.
Alors j’aimerais pouvoir killer ce truc qui m’écoute sur mon port parce que là du coup je suis obligé de faire un jar, de l’uploader par ftp sur ma machine Solaris et puis de la lancer dans un term. Ce qui est un peu relou.
Merci beaucoup d’avance… ça fait un moment que je bloque sur ces deux conneries. Je suis à l’écoute si vous avez besoin de plus de précisions.