Java telnet连接的实现

19 篇文章 0 订阅
1 篇文章 0 订阅

  
  
  1. import org.apache.commons.net.telnet.*;  
  2. import java.io.*;  
  3. public class TelnetSample {  
  4.     private TelnetClient telnet = new TelnetClient();  
  5.     private InputStream in;  
  6.     private PrintStream out;  
  7.     private char prompt = ';  
  8.     public TelnetSample(String server, String user, String password) {  
  9.         try {  
  10.             telnet.connect(server, 23);  
  11.             in = telnet.getInputStream();  
  12.             out = new PrintStream(telnet.getOutputStream());  
  13.             readUntil("ogin: ");  
  14.             write(user);  
  15.             readUntil("assword: ");  
  16.             write(password);  
  17.         } catch (Exception e) {  
  18.             e.printStackTrace();  
  19.         }  
  20.     }  
  21.     public void su(String password) {  
  22.         try {  
  23.             write("su");  
  24.             readUntil("Password: ");  
  25.             write(password);  
  26.             prompt = '#';  
  27.             readUntil(prompt + " ");  
  28.         } catch (Exception e) {  
  29.             e.printStackTrace();  
  30.         }  
  31.     }  
  32.     public String readUntil(String pattern) {  
  33.         try {  
  34.             char lastChar = pattern.charAt(pattern.length() - 1);  
  35.             StringBuffer sb = new StringBuffer();  
  36.             boolean found = false;  
  37.             char ch = (char) in.read();  
  38.             while (true) {  
  39.                 System.out.print(ch);  
  40.                 sb.append(ch);  
  41.                 if (ch == lastChar) {  
  42.                     if (sb.toString().endsWith(pattern)) {  
  43.                         return sb.toString();  
  44.                     }  
  45.                 }  
  46.                 ch = (char) in.read();  
  47.             }  
  48.         } catch (Exception e) {  
  49.             e.printStackTrace();  
  50.         }  
  51.         return null;  
  52.     }  
  53.     public void write(String value) {  
  54.         try {  
  55.             out.println(value);  
  56.             out.flush();  
  57.             System.out.println(value);  
  58.         } catch (Exception e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.     }  
  62.     public String sendCommand(String command) {  
  63.         try {  
  64.             write(command);  
  65.             return readUntil(prompt + " ");  
  66.         } catch (Exception e) {  
  67.             e.printStackTrace();  
  68.         }  
  69.         return null;  
  70.     }  
  71.     public void disconnect() {  
  72.         try {  
  73.             telnet.disconnect();  
  74.         } catch (Exception e) {  
  75.             e.printStackTrace();  
  76.         }  
  77.     }  
  78.     public static void main(String[] args) {  
  79.         try {  
  80.             TelnetSample telnet = new TelnetSample("192.1***.0.***""username","password");  
  81.             telnet.sendCommand("dir ");  
  82.         } catch (Exception e) {  
  83.             e.printStackTrace();  
  84.         }  
  85.     }  
------------------------------------------------------------------------------------------------------------------------ 建立PC与设备的连接,之后发送命令 Runtime.getRuntime().exec("adb forward tcp:1080 tcp:1080"); Runtime.getRuntime().exec("adb shell monkey --port 1080"); Socket socket = new Socket();
socket.connect(new InetSocketAddress("127.0.0.1", 1080));
BufferedWriter out = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));
out.write("cmd");
out.newLine();
out.flush();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值