日期:2014-05-20  浏览次数:20875 次

JAVA如何实现跟TELNET一样
我写了程序实现TELNET,有握手的过程,如下:
 import java.io.*;  
  import java.net.Socket;  
   
  public class TelnetExample {  
///TELNET握手过程 
  public static int hand(InputStream is, OutputStream os) throws IOException {  
  while(true) {  
  int ch = is.read();  
  if(ch < 0 || ch != 255)  
  return ch;  
  int cmd = is.read();  
  int opt = is.read();  
  switch(opt) {  
  case 1: // echo协商选项,本程序未处理  
  break;  
  case 3: // supress go-ahead(抑制向前选项)  
  break;  
  case 24: // terminal type(终端类型选项)  
  if(cmd == 253) {  
  os.write(255);  
  os.write(251);  
  os.write(24);  
   
  os.write(255);  
  os.write(250);  
  os.write(24);  
  os.write(0);  
  os.write("dumb".getBytes());  
  os.write(255);  
  os.write(240);  
  } else if (cmd == 250) {  
  ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  int svr = is.read();  
  while(svr != 240) {  
  baos.write(svr);  
  svr = is.read();  
  }  
  System.out.println("Svr:" + baos.toString());  
  }  
  break;  
  default:  
  if (cmd == 253) {  
  os.write(255);  
  os.write(252);  
  os.write(opt);  
  }  
  }  
  }  
  }  
  public static void main(String[] args) throws Exception {  
  Socket s = new Socket("host",23);  
  InputStream is = s.getInputStream();  
  OutputStream os = s.getOutputStream();  
  System.out.println(hand(is,os)); //TELNET握手 
   
  os.write("user\n".getBytes());  
  os.write("password\n".getBytes());  
  BufferedReader br = new BufferedReader(new InputStreamReader(is));  
  char[] buf = new char[1024];  
  int read = br.read(buf);  
  while(read > 0) {  
  System.out.println(new String(buf,0,read));  
  read = br.read(buf);  
  }  
  }  
  }  
TELNET登录是成功了,但是发一些指令比如:ps -ef,却发现回送过来的信息(收到什么就显示什么)常有一些奇怪的字符,而这些字符在实际的TELNET中应该是不可见的,而且信息的分割很乱,如何做的跟TELNET中的回显一模一样呢(即过滤了那些不可见字符同时又分行显示),请赐教,万分感谢。分不是问题。

------解决方案--------------------
我有一个完整的telnet的程序,不知道怎么发给你。留下你QQ吧
------解决方案--------------------
不懂,帮不了你,没鼓捣过

不过你可以参考 http://commons.apache.org/net/

已经有现成的类库实现了各种常见的协议,我们何必自己写一个呢?

如果为了研究,可以参考他的源代码。
------解决方案--------------------
探讨
不懂,帮不了你,没鼓捣过

不过你可以参考 http://commons.apache.org/net/

已经有现成的类库实现了各种常见的协议,我们何必自己写一个呢?

如果为了研究,可以参考他的源代码。

------解决方案--------------------
有现成的telnet工具吧?叫telnetd。我一直用
搂住可以看看源代码研究