package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.InetAddress; import java.net.Socket; public class TelnetClient { private String host; private int port; private Socket socket; private PrintStream out; private BufferedReader in; private StringBuilder output = new StringBuilder(); private Thread thread; public TelnetClient(String host, int port) { this.host = host; this.port = port; } public void connect() throws TelnetException { try { if (socket == null) { InetAddress addr = InetAddress.getByName(host); socket = new Socket(addr, port); if (out == null) { out = new PrintStream(socket.getOutputStream()); } if (in == null) { in = new BufferedReader(new InputStreamReader(socket.getInputStream())); } thread = new Thread() { public void run() { try { char ch; while ((ch = (char)in.read()) != -1) { synchronized (output) { output.append(ch); } } } catch (IOException e) { this.interrupt(); try { TelnetClient.this.disconnect(); } catch (TelnetException e1) { } } } }; thread.setDaemon(true); thread.start(); } } catch (Exception e) { throw new TelnetException(e); } } public void disconnect() throws TelnetException { try { if (out != null) { out.close(); } if (in != null) { in.close(); } if (socket != null) { socket.close(); } thread.interrupt(); } catch (IOException e) { throw new TelnetException(e); } } public void sendCommand(final String cmd) throws TelnetException { if (socket == null) { throw new IllegalStateException(); } out.println(cmd); out.flush(); } public String getOutput() { try { Thread.sleep(1000); } catch (InterruptedException e) { } String ret = ""; synchronized (output) { ret = output.toString(); } return ret; } }