浏览 18449 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-02
一个简单的JAVA Telnet 客户端实现
commons-net-2.0.jar telnet功能的简单使用, 这个包实现了很多基本的基于Intenet协议,下面是 commons 支持的协议:
下面简单写一个程序做telnet的测试,此程序仅作测试,所以很多写法并不规范。
import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import org.apache.commons.net.telnet.TelnetClient; public class CommonsTelnetTest { private final String ip = ""; // 要telnet的IP地址 private final String port = "23"; //端口号,默认23 private final String user = "";//用户名 private final String pwd = ""; //用户密码 private final String osTag = "$";// 系统标示符号 private final TelnetClient tc = new TelnetClient(); //新建一个 TelnetClient对象,此对象是 commons-net-2.0.jar包提供 private InputStream in; // 输入流,接收返回信息 private PrintStream out; //像 服务器写入 命令 public void connect() { try { tc.connect(ip, Integer.parseInt(port)); in = tc.getInputStream(); out = new PrintStream(tc.getOutputStream()); } catch (Exception e) { System.out.println("connect error !"); } } public String execute(String command) { connect(); out.println(command); out.flush(); StringBuffer sb = new StringBuffer(); try { char ch = (char) in.read(); while (true) { sb.append(ch); if (ch == osTag.charAt(osTag.length() - 1)) { if (sb.toString().endsWith(osTag)) return sb.toString(); } ch = (char) in.read(); } } catch (IOException e) { e.printStackTrace(); } return "error! when the program execute"; } public static void main(String [] args){ System.out.println(new CommonsTelnetTest().execute("ls")); } }
这是 commons 2.0 API的地址 :http://commons.apache.org/net/apidocs/index.html
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-17
请问这个小程序只能用在lunix下吗?
|
|
返回顶楼 | |
发表时间:2008-12-18
lcmlcm 写道 请问这个小程序只能用在lunix下吗? 当然不是了,这个小程序在FTP、TELNET 等都可以的,只要你配置端口号,和系统标示符号比如 部分UNIX可以配置成$,连接FTP可以配置成FTP> |
|
返回顶楼 | |
发表时间:2009-05-31
最后修改:2009-06-01
while (true) {
sb.append(ch); if (ch == osTag.charAt(osTag.length() - 1)) { if (sb.toString().endsWith(osTag)) return sb.toString(); } ch = (char) in.read(); } 如果ch == osTag.charAt(osTag.length() - 1) 条件始终不成立 会怎么样? |
|
返回顶楼 | |
发表时间:2009-07-28
chenyongxin 写道 while (true) { sb.append(ch); if (ch == osTag.charAt(osTag.length() - 1)) { if (sb.toString().endsWith(osTag)) return sb.toString(); } ch = (char) in.read(); } 如果ch == osTag.charAt(osTag.length() - 1) 条件始终不成立 会怎么样? ch == osTag.charAt(osTag.length() - 1) 是用来判断 操作系统结束字符的, 有的时候比如 帮助文档 ,你需要发继续发空格 给操作系统,这样才能保证收到操作系统的结束符号,实际中 会有各种各样的问题。。。。 |
|
返回顶楼 | |
发表时间:2009-07-30
如何避免返回输入命令
commnons-net-2.0 会把命令和结果集一起返回来 如 $ ls 返回结果 ls 结果集 |
|
返回顶楼 | |