Quero fazer um CMD interativo... Tenho uma idéia.. O que acham?

Oi oi Gente… Segue aqui mais um código que eu tenho e em seguida a pergunta:

[code]public String Rruntime(String command)
{
Runtime rt = null;
rt = rt.getRuntime();
try {
Process proc = rt.exec(command);
InputStream inputStream = proc.getInputStream();
OutputStream outputStream = proc.getOutputStream();
InputStream input = proc.getInputStream();

        int c;  
        StringBuilder sb = new StringBuilder("");  
            while((c = input.read()) != -1)  
            {  
             sb.append((char)c);  
            }  
    
       outProcess = sb.toString();
       } catch (IOException ex) {JOptionPane.showMessageDialog(null,"Error: " + ex.getMessage());}
        
    return outProcess;
}[/code]

è assim… Se eu mandar " ping localhost ", ele me retorna o resultado . OK! Funciona perfeitamente pra comandos que me retornam alguma coisa.

Mas agora… Se eu mandar , “CMD” , ele fica travado. Então, estou querendo fazer um interativo, de modo que, mesmo após eu digitar CMD, eu possa continuar interagindo com ele, digitando ping, e pegando os valores…
Eu acho que eu devo enviar CMD pelo parametro do método e depois ficar interagindo com inputstream , esta correto Isso ? Preciso de mais de uma thread ou posso fazer tudo numa classe só ?

Valeu Gente

:smiley:

[quote=Andre Lopes]Oi oi Gente… Segue aqui mais um código que eu tenho e em seguida a pergunta:

[code]public String Rruntime(String command)
{
Runtime rt = null;
rt = rt.getRuntime();
try {
Process proc = rt.exec(command);
InputStream inputStream = proc.getInputStream();
OutputStream outputStream = proc.getOutputStream();
InputStream input = proc.getInputStream();

        int c;  
        StringBuilder sb = new StringBuilder("");  
            while((c = input.read()) != -1)  
            {  
             sb.append((char)c);  
            }  
    
       outProcess = sb.toString();
       } catch (IOException ex) {JOptionPane.showMessageDialog(null,"Error: " + ex.getMessage());}
        
    return outProcess;
}[/code]

è assim… Se eu mandar " ping localhost ", ele me retorna o resultado . OK! Funciona perfeitamente pra comandos que me retornam alguma coisa.

Mas agora… Se eu mandar , “CMD” , ele fica travado. Então, estou querendo fazer um interativo, de modo que, mesmo após eu digitar CMD, eu possa continuar interagindo com ele, digitando ping, e pegando os valores…
Eu acho que eu devo enviar CMD pelo parametro do método e depois ficar interagindo com inputstream , esta correto Isso ? Preciso de mais de uma thread ou posso fazer tudo numa classe só ?

Valeu Gente

:smiley: [/quote]

com esse código ai vc não tem NullPointer na linha 4?

[quote=maior_abandonado]

com esse código ai vc não tem NullPointer na linha 4?[/quote]

É uma chamada a método estático. Dai não tem NP não =]

:smiley:
Não da nenhum erro, ele funciona normalmente.

Então, alguém tem alguma idéia como posso fazer isso ?

Bom gente, fiquei boa parte da tarde/noite tentando arrumar isso,mas não consegui. O fato é, que ele , por algum motivo para dentro da linha 15 e não sai dali.
Não sei o que fazer;

Por favor, qualquer dica ja ajuda;

Um “cmd interativo” (ou seja, um programa Java Swing que se comunique com cmd.exe) é bem chatinho de se escrever em Java. Você realmente quer fazer isso?

Quero! Pelo menos como funcionaria. Pra saber o que falta eu aprender. Existe algum conceito de programação que eu não sei. Eu preciso saber como fazer de qualquer jeito. Não vou conseguir viver sem saber como isso funcionaria. :smiley:

Então eu preciso aprender SwingWorker ? Alguém pode me confirmar isso antes de eu começar a me matar aprendendo isso ?

:smiley: Valeu gente!