Utilizzare Iperf da java

di il
3 risposte

Utilizzare Iperf da java

Salve,
sono alle prime armi con la programmazione Java, perciò chiedo una mano a chi ha mai fatto una cosa simile.
Sto sviluppando un miniprogramma che utilizza iperf3 per testare il traffico in una rete. Ho scaricato iperf3.exe e l'ho posto in una cartella nel mio workspace, ma non so come avviarlo.
Sto utilizzando la classe Runtime richiamando il programma, ma non so come impostare la stringa di comando per l'exec().
Ho notato che facendo:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd /c dir src");
mi visualizza il contenuto della cartella src del workspace, proprio come si fa in dos.
Ho pensato che i comandi vengono inserite come si fa in dos, in questo caso dunque dovrei scrivere:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd /c src/iperf/iperf3.exe -c 127.0.0.1 -p 5201");
ho nel frattempo aperto un prompt mettendomi in ascolto con l'istruzione:
iperf3.exe -s
La porta in ascolto è ovviamente 5201.
Il mio codice poi dovrebbe visualizzare la risposta facendo:

InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");

Potreste consigliarmi come fare????

3 Risposte

  • Re: Utilizzare Iperf da java

    Ho risolto nel seguente modo:
    Runtime r= Runtime.getRuntime();
    try{
    //String command ="cmd /c start";
    //Process pr=r.exec(command);

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("cmd /c src\\iperf\\iperf3.exe -c 127.0.0.1 -p 5201");
    //Process proc = rt.exec("cmd /c dir src");
    InputStream stdin = proc.getInputStream();
    InputStreamReader isr = new InputStreamReader(stdin);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    System.out.println("<OUTPUT>");
    while ( (line = br.readLine()) != null)
    System.out.println(line);
    System.out.println("</OUTPUT>");
    // int exitVal = proc.waitFor();
    //System.out.println("Process exitValue: " + exitVal);

    }catch(Exception e){
    System.out.println("Errore");
    }
    ora il problema è che ottengo l'output tutto il una volta e vorrei ottenerlo man mano che il processo calcola i risultati. Idee??
  • Re: Utilizzare Iperf da java

    Non ti serve chiamare la shell che CHIAMA l'eseguibile

    CHIAMA direttamente l'eseguibile!
  • Re: Utilizzare Iperf da java

    Hai ragione Non ci avevo pensato, sai invece come far vedere man mano il risultato, perchè mi appare tutto alla fine?
Devi accedere o registrarti per scrivere nel forum
3 risposte