最近在研究telnet 但不知道如何在连接后,通过客户端向服务器端发送用户名和密码,需要什么脚本或命令么,
比如 USER+username    PASS+password之类的,求高手指点,谢谢了

解决方案 »

  1.   

    用java实现不知道
    我用C整过登录cisco路由器的  和telnet对象机器的23端口建立连接后 通过该socket接受对方发来的信息 
    然后把信息记录一下来 然后根据该信息的内容 把用户名和密码通过该socket再发送过去
      

  2.   

    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
      

  3.   

    感谢,但是我很想用socket实现和服务器的传输,这样如何呢?楼上的代码是已经封装好的~我想自己实现一个·····
      

  4.   

    创建Socket之后,获取InputStream和OutputStream,并转换成BufferedReader、BufferedWriter
    开两个线程:
      Read线程:从BufferedReader里面readline,获取数据后直接输出到屏幕
      Writer线程:
        转换System.in为BufferedReader,然后readline,获取数据后就写到Socket的BufferedWriter里面去这个是控制台交互的办法。
    如果不要双线程,那交替的读写也可以。
      

  5.   

    还有就是Socket要设置一下NoTcpDelay,否则有些延时(0.1秒大概)