• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

samuca

Telnet em Java

8 mensagens neste tópico

Precisava de fazer um programa em java que fizesse interacção com um aparelho através de telnet...

Tive a fazer uma pequena pesquisa e não encontrei nenhuma classe que me permitisse fazer isso com relativa facilidade. Encontrei esta: http://www.jscape.com/articles/telnet_using_java.html, mas ao que parece não é livre para usar.

Será que alguém conhece algo que me possa ajudar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheço classe nenhuma que faça isso por ti, mas telnet é um protocolo bastante simples de seguir. Os comandos existentes para o protocolo são poucos e fáceis de usar e uma ligação telnet não é mais que uma ligação através de um socket.

Porque não implementar a classe?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, se calhar vou mesmo por aí... ando a aprender java na faculdade mas nunca trabalhei com sockets.

Mas esta até é uma boa forma de aprender mais, estava à procura de uma classe que o fizesse por mim, mas assim ganho mais conhecimentos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É bastante simples de fazer até, tenho exemplos de como fazer se precisares.

Neste caso, para usar telnet, um socket é fácil de usar, basta instanciares um socket cliente, obteres a stream de escrita e escreveres para o socket usando um dos vários métodos de escrita que tens disponível, dependerá do tipo de stream que criares.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com streams já estou mais ou menos familiarizado por causa da escrita em ficheiros binários... até ao fim de semana tentar aprender, se não estiver a conseguir depois coloco as dúvidas aqui.

Obrigado pelas dicas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha outro!

Aqui há tempos era eu aqui a bombar dúvidas sobre sockets em java.

E até é simples, olha o meu código: :)

http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=223686

Só um pequeno aviso. Tem havido algumas mudanças nalgumas funções de sockets e mesmo nas de IO em versões do java mais ou menos recentes, pelo que alguma documentação que aí está espalhada pela internet esa desactualizada e muitos exemplos de código não funcionam.

O site da SUN é, obviamente, uma fonte de confiança.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não funcionam? Se há coisa que podes garantir no Java é que até o código mais velho funciona actualmente, bugs incluídos :).

Dois locais para obter documentação serão sempre o Javadoc oficial e o Java Tutorial da Sun.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este fim de semana estive a aprender umas coisas e fiz uma classe para trabalhar com Telnet, provavelmente ainda vai precisar de umas afinações quando construir o programa principal para interagir com ela, mas aqui vai:

import java.io.*;
import java.net.*;

public class TelnetClient {
       private Socket telnetSocket;
       private PrintWriter out;
       private BufferedReader in;
       private String hostname;
       private final int port = 23;

       private TelnetClient(String host) {
              hostname = host;
       }

       public String command(String cmd) {
              String response;
              char[] temp = null;

              if(cmd != null)
                     out.println(cmd);

              try {
                     in.read(temp);
                     response = new String(temp);
                     return response;
              } catch (IOException e) {
                     return null;
              }
       }

       public boolean close() {
              boolean result = true;
              try {
                     out.close();
                     in.close();
                     telnetSocket.close();
              } catch (Exception e) {
                     result = false;
              }
              return result;
       }

       public String start() {
              return command(null);
       }

       protected void finalize() {
              this.close();
       }

       public static TelnetClient getTelnetClient(String hostname) {
              TelnetClient temp = new TelnetClient(hostname);

              try {
                     temp.telnetSocket = new Socket(temp.hostname, temp.port);
                     temp.out = new PrintWriter(temp.telnetSocket.getOutputStream(),true);
                     temp.in = new BufferedReader(new InputStreamReader(temp.telnetSocket.getInputStream()));
              } catch (Exception e) {
                     temp = null;
              }
              return temp;
       }
}

Afinal não é nada dificil trabalhar com sockets em java  :D

Se encontrarem algum problema ou melhoria a fazer, façam favor de dizer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora