需要敲入太多的telnet命令,繁琐,对。是时候解放自己了。
1. 下载java telnet包,请Google搜索 jtelnet-withall.jar的包,其中包含了源代码和jar包
2. 新建java工程,讲下载的包解压缩得到jtelnet.jar,把jtelnet.jar添加到java工程的build path。
3. 把我下面的代码拷贝到src下面的新建的某个packate下面。
import java.net.*; import java.io.*; import thor.net.*; class SimpleTelnetTerminalHandler extends DefaultTelnetTerminalHandler//辅助类 implements TelnetConstants { public void LineFeed() { System.out.print('\n'); System.out.flush(); } public void CarriageReturn() { System.out.print('\r'); System.out.flush(); } public void BackSpace() { System.out.print((char) BS); System.out.flush(); } public void HorizontalTab() { System.out.print((char) HT); System.out.flush(); } } public class telnet { static volatile boolean closed = false; public static void main(String[] args) { telnetCloseAuth("192.168.4.5", 5002);//你自己的telnet主机ip和端口(23比较常见) } private static void telnetCloseAuth(String inHost, int inPort) { try { String host = inHost; int port = inPort; URL url = new URL("telnet", host, port, "", new thor.net.URLStreamHandler()); URLConnection urlConnection = url.openConnection(); urlConnection.connect(); if (urlConnection instanceof TelnetURLConnection) { ((TelnetURLConnection) urlConnection) .setTelnetTerminalHandler(new SimpleTelnetTerminalHandler()); } OutputStream out = urlConnection.getOutputStream(); final InputStream in = urlConnection.getInputStream(); (new Thread(new Runnable() { public void run() { try { int ch; do { ch = in.read(); if (ch < 0) return; System.out.print((char) ch); System.out.flush(); } while (true); } catch (Exception e) { if (!closed) e.printStackTrace(); } } })).start(); int key; /*while (true) { key = System.in.read(); if (key == (']' - 64)) break; out.write(key); }*/ // 我这里是要执行固定的几个命令,你也可以放开上面的那一段注释,实时的与telnet服务器通信 String[] commands = new String[]{"admin\r\n", "admin\r\n", "vlr\r\n", "CloseAuth 0\r\n"}; for (String cmd:commands){ Thread.sleep(1000); //System.out.println(cmd); out.write(cmd.getBytes()); } Thread.sleep(1000); ((TelnetURLConnection) urlConnection).disconnect(); } catch (Exception e) { e.printStackTrace(); } } }