测试环境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";
}
}
}
注意:本文归作者所有,未经作者允许,不得转载