Java telnet 登入问题 最近在研究telnet 但不知道如何在连接后,通过客户端向服务器端发送用户名和密码,需要什么脚本或命令么,比如 USER+username PASS+password之类的,求高手指点,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用java实现不知道我用C整过登录cisco路由器的 和telnet对象机器的23端口建立连接后 通过该socket接受对方发来的信息 然后把信息记录一下来 然后根据该信息的内容 把用户名和密码通过该socket再发送过去 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 感谢,但是我很想用socket实现和服务器的传输,这样如何呢?楼上的代码是已经封装好的~我想自己实现一个····· 创建Socket之后,获取InputStream和OutputStream,并转换成BufferedReader、BufferedWriter开两个线程: Read线程:从BufferedReader里面readline,获取数据后直接输出到屏幕 Writer线程: 转换System.in为BufferedReader,然后readline,获取数据后就写到Socket的BufferedWriter里面去这个是控制台交互的办法。如果不要双线程,那交替的读写也可以。 还有就是Socket要设置一下NoTcpDelay,否则有些延时(0.1秒大概) 小弟初学,关于J2SE 1.4前的用Object解决的泛型的一个问题,请教一下 关于自定义DateFormat格式的问题 欢迎java高手进组 excuse me 一个很低级问题的java问题 这个正则表达式该怎么写? 如何从左取字符串的一部分(代码) 急!求一个“文件压缩”的源程序或相关Java资源?谢谢! 菜鸟问题 如何判断客户端是否安装了Jre????(高分,发表意见就给) 问一个打jar的问题 java每月月底定时执行指定任务
我用C整过登录cisco路由器的 和telnet对象机器的23端口建立连接后 通过该socket接受对方发来的信息
然后把信息记录一下来 然后根据该信息的内容 把用户名和密码通过该socket再发送过去
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
开两个线程:
Read线程:从BufferedReader里面readline,获取数据后直接输出到屏幕
Writer线程:
转换System.in为BufferedReader,然后readline,获取数据后就写到Socket的BufferedWriter里面去这个是控制台交互的办法。
如果不要双线程,那交替的读写也可以。