zoukankan      html  css  js  c++  java
  • 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 '
    
    '
                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 "";
        }
    }
  • 相关阅读:
    图像维纳滤波实现(2)
    C++之路 变量和基本类型(2)
    [C# 线程处理系列]专题四:线程同步
    [转]排列组合
    Bessie Come Home(!)先存着
    The ONE v1.4.1 Readme
    myeclipse字体修改
    vm 三种上网方式
    Cow Tours
    C++中, 构造函数和析构函数能不能被显示调用?
  • 原文地址:https://www.cnblogs.com/wellla/p/4200821.html
Copyright © 2011-2022 走看看