测试环境win7 64位

package com.dispatcher.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.net.telnet.TelnetClient;
public class TelnetUtil {
    private TelnetClient tc;
    private String port;
    private String ip;
    private BufferedReader br;
    private BufferedWriter bw;
    public TelnetUtil(String ip, String port) {
        this.ip = ip;
        this.port = port;
        this.tc = new TelnetClient("VT220");
    }

    /**
     * @return boolean 连接成功返回true,否则返回false
     */
    public boolean connect() {
        boolean isConnect = true;
        try {
            tc.connect(ip, Integer.parseInt(port));
            DataInputStream dataIS = new DataInputStream(tc.getInputStream());
            InputStreamReader inSR = new InputStreamReader(dataIS, "GB2312");
            br = new BufferedReader(inSR);
            DataOutputStream dataOS = new DataOutputStream(tc.getOutputStream());
            OutputStreamWriter outSW = new OutputStreamWriter(dataOS, "GB2312");
            bw = new BufferedWriter(outSW);
        } catch (Exception e) {
            isConnect = false;
            e.printStackTrace();
            return isConnect;
        }
        return isConnect;
    }

    public void disconnect() {
        try {
            if (tc != null && tc.isConnected()) {
                tc.disconnect();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String readUntil(String pattern) {
        try {
            char lastChar = pattern.charAt(pattern.length() - 1);  
            StringBuffer sb = new StringBuffer();  
            char ch = (char) br.read();
            while (true) {  
                sb.append(ch);
                if (ch == lastChar) {  
                    if (sb.toString().endsWith(pattern)) {
                        return new String(sb.toString().getBytes(), "UTF-8");
                    }  
                }  
                ch = (char) br.read();  
            }
        } catch (Exception e) {
            e.printStackTrace();  
        }
        return "";  
    }
    public String readUntil() {
        try {
            StringBuffer sb = new StringBuffer();  
            char ch = (char) br.read();
            while (true) {  
                sb.append(ch);
                if (sb.toString().lastIndexOf(">")>0) {
                    return new String(sb.toString().getBytes(), "UTF-8");  
                }  
                ch = (char) br.read();
            }
        } catch (Exception e) {
            e.printStackTrace();  
        }
        return "";  
    }
    private void write(String value) {
        try {
            bw.write(value);
            bw.write(13);
            bw.write(10);
            bw.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 向服务器发送命令
     *
     * @param string
     */
    public void sendCommand(String command) {
        try {
            write(command);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static String pattInfo(String info) {
        String regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
        Pattern pattern = Pattern.compile(regexDuration);
        Matcher m = pattern.matcher(info);
        if (m.find()) {
            return m.group(3)+"k";
        }else{
            return "3000k";
        }
    }
}



注意:本文归作者所有,未经作者允许,不得转载