[RESOLVIDO]Java + Runtime

4 respostas
Schimuneck

Ae galera, estou tentando criar um conexão via telnet pelo terminal, usando java.

Então estou usando o comando

Runtime.getRuntime().exec(command);

Ele funciona muito bem quando eu quero executar um script que faça essa conexão. O problema ocorre quando tento fazer o telnet e nele executar um comando.
Já tentei de diversas maneiras:

String[] command = new String[] {"telnet 192.168.128.227 5001", "cmd:start_traffic", "quit"};
        Runtime.getRuntime().exec(command);

Também já tentei assim:

Runtime.getRuntime().exec("telnet 192.168.128.227 5001"); 
Runtime.getRuntime().exec("cmd:start_traffic");

Mas não adiantou, párese que ao eu enviar a segunda string, apos ter feito a conexão, ele não reconhece o comando.

Alguém sabe como posso resolver isso, ou implementar de alguma outra forma?

Obrigado.

4 Respostas

ViniGodoy

Use o Jakarta Commons Net.
http://www.informit.com/guides/content.aspx?g=java&seqNum=40

Cada exec, no java, é como se vc abrisse um novo prompt de comando. Se vc quiser dar vários comandos no exec, você teria que controlar o InputStream e o OutputStream do processo (note que a classe Process permite isso).

Usar o exec é lento e consome muitos recursos, use o Jakarta commons que faz isso de maneira nativa. :wink:

F

Olá,

Não consegui perceber qual o comando que devo usar para controlar o outputstream de modo a poder enviar mais de um comento via exec.

Estou enfrentando o mesmo problema.

Tería como descrever um exemplo?

obrigado.

Schimuneck

Não consegui usar o jakarta. Baixei a biblioteca tudo certinho mas não consegui nem fazer a conexão com o aparelho.

E usando o exec com Input e Output também não consegui, mesmo que ficasse lento, mas pelo menos queria ver o resultado.

Sabe onde posso conseguir algum exemplo para me ajudar?

Obrigado.

Schimuneck

Consegui resolver o problema da seguinte maneira:

Socket clientSocket = new Socket("192.168.128.227", 5001);

     PrintWriter outToServer = new PrintWriter(
     clientSocket.getOutputStream(),true);

  BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
     clientSocket.getInputStream()));

        String teste = "...";

        teste = teste + "[code]

Socket clientSocket = new Socket("192.168.128.227", 5001);

     PrintWriter outToServer = new PrintWriter(
     clientSocket.getOutputStream(),true);

  BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
     clientSocket.getInputStream()));

        String teste = "...";

        teste = teste + "\0";

         outToServer.println (teste);

        String resposta = inFromServer.readLine();

         System.out.println(resposta);

         clientSocket.close();
";

outToServer.println (teste);

String resposta = inFromServer.readLine();

System.out.println(resposta);

clientSocket.close();

[/code]

Obrigado aos que se dispuseram a ajudar.

Criado 9 de março de 2011
Ultima resposta 15 de mar. de 2011
Respostas 4
Participantes 3