首页 > 代码库 > TelnetTerminal

TelnetTerminal

package com.network.telnet;import java.io.IOException;import java.io.InputStream;import java.io.PrintStream;import org.apache.commons.net.telnet.TelnetClient;public class TelnetTerminal extends Thread {    public static final int DEFAULT_TELNET_PORT = 23;    /**     * the TelnetClient of commons-net     */    public TelnetClient telnet;    /**     * the output of remote     */    private StringBuffer remoteInfo = new StringBuffer();    private InputStream in;    private PrintStream out;    /**     * use default port     *      * @param ip     */    public TelnetTerminal(String ip) {        this(ip, DEFAULT_TELNET_PORT);    }    /**     * create a telnet terminate     *      * @param ip     * @param port     */    public TelnetTerminal(String ip, int port) {        try {            telnet = new TelnetClient();                        telnet.connect(ip, port);            //to sure the thread must be stop and socket must be close            telnet.setSoTimeout(3000);            in = telnet.getInputStream();            out = new PrintStream(telnet.getOutputStream());            // open the thread of received            start();        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * wirte to remote     *      * @param command     */    public void write(String command) {        try {            // the interval of execute command            Thread.sleep(500);            // a command end with ‘\n\r‘            out.println(command);            out.flush();        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * close connect     */    public void disconnect() {        try {            telnet.disconnect();            telnet = null;        } catch (Exception e) {            e.printStackTrace();        }    }    @Override    public void run() {        byte[] buff = new byte[1024];        int len = 0;        try {            while ((len = in.read(buff)) != -1) {                String str = new String(buff, 0, len);                remoteInfo.append(str);            }        } catch (IOException e) {        }    }    /**     * exceute script     *      * @param scripts     */    public void runCMD(String... scripts) {        for (String cmd : scripts) {            write(cmd.trim());        }    }    /**     * get output info of the remote, but this method will block 1000ms     *      * @return     */    public String getRemoteInfo() {        try {            Thread.sleep(1000);            return remoteInfo.toString();        } catch (InterruptedException e) {            e.printStackTrace();        }        return "";    }}

 

TelnetTerminal