zoukankan      html  css  js  c++  java
  • commons.net.telnet使用示例

    import org.apache.commons.net.telnet.TelnetClient;
    
    import java.io.IOException;
    
    public class TelnetDemo {
    
        public static void main(String[] args) throws IOException {
            TelnetClient telnet = new TelnetClient();
            String remoteip = "10.1.1.159";
            int remoteport = 9999;
            telnet.connect(remoteip, remoteport);
            System.out.println(telnet.isAvailable());
            System.out.println(telnet.isConnected());
    
            IOUtil.readWrite(telnet.getInputStream(), telnet.getOutputStream(),
                    System.in, System.out);
            telnet.disconnect();
            System.exit(0);
        }
    }
    import org.apache.commons.net.io.Util;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /**
     * This is a utility class providing a reader/writer capability required
     * by the weatherTelnet, rexec, rshell, and rlogin example programs.
     * The only point of the class is to hold the static method readWrite
     * which spawns a reader thread and a writer thread.  The reader thread
     * reads from a local input source (presumably stdin) and writes the
     * data to a remote output destination.  The writer thread reads from
     * a remote input source and writes to a local output destination.
     * The threads terminate when the remote input source closes.
     * *
     */
    
    public final class IOUtil {
    
        public static final void readWrite(final InputStream remoteInput,
                                           final OutputStream remoteOutput,
                                           final InputStream localInput,
                                           final OutputStream localOutput) {
            Thread reader, writer;
    
            reader = new Thread() {
                @Override
                public void run() {
                    int ch;
    
                    try {
                        while (!interrupted() && (ch = localInput.read()) != -1) {
                            remoteOutput.write(ch);
                            remoteOutput.flush();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };
    
    
            writer = new Thread() {
                @Override
                public void run() {
                    try {
                        Util.copyStream(remoteInput, localOutput);
                    } catch (IOException e) {
                        e.printStackTrace();
                        System.exit(1);
                    }
                }
            };
    
    
            writer.setPriority(Thread.currentThread().getPriority() + 1);
            writer.start();
            reader.setDaemon(true);
            reader.start();
    
            try {
                writer.join();
                reader.interrupt();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    网站访问量和服务器带宽的选择
    PHP实现四种基本排序算法
    常用的PHP排序算法以及应用场景
    常见的mysql数据库sql语句的编写和运行结果
    MyBatis拦截器:给参数对象属性赋值
    《自律让你自由》摘要
    Java JDK1.5、1.6、1.7新特性整理(转)
    人人都能做产品经理吗?
    Windows下查询进程、端口
    一语收录(2016-09-18)
  • 原文地址:https://www.cnblogs.com/softidea/p/5396341.html
Copyright © 2011-2022 走看看