java telnet socket:BufferedReader / BufferedWriter [英] java telnet socket : BufferedReader / BufferedWriter

查看:171
本文介绍了java telnet socket:BufferedReader / BufferedWriter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的服务器在23999打开一个telnet端口,当我给 telnet localhost 23999 时,它显示如下:

My server opens a telnet port on 23999 and when I give telnet localhost 23999, it shows below :

< BP-SAS ==> bplin19 !>telnet 0 23999
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Please enter password to authenticate:
(here i give password for example abc123)   
Enter 'help' at any point to get a listing of all registered commands...
BAS> log set-info 1 ( commad i have entered and it does somthing )

现在不是像这样打开,我必须编写做这件事的java代码。

Now Instead of open like this, I have to write java code which does this thing.


  1. 连接到主机23999端口

  2. 输入密码

  3. 输入commad






Socket soc=new Socket("192.168.9.7",23999);
  while(true){
  //create buffered writer
  BufferedReader bwin = new BufferedReader(new InputStreamReader(soc.getInputStream()));
  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream()));
  BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream()));
  String readFir = bwin.readLine();
  System.out.println(readFir);
        if(readFir.startsWith("Please")){
            System.out.println("Password Entered");
            bw.write("abc123");
            bw.flush();
            bw.close();  //close buffered Reader 
        }

        readFir = bwin.readLine();
        if(readFir.startsWith("Enter")){
            System.out.println("Enter command");
            bw1.write("log set-info 1");
            bw1.flush();
            bw1.close();  //close buffered Reader 
        }
        //readFir = bwin.readLine();
    }

这不起作用。实际上,我有点困惑我应该遵循什么方法。读者/作者之间非常混淆。

This is not working.Actually, I am bit confused what approach I should follow.Very much confused between reader/writer.

请帮忙。

推荐答案

只需要获取套接字输入流和输出流一次(在while循环外执行此操作)。尝试这样的事情:

Only need to get socket input stream and output stream once (do this outside the while loop). Try something like this:

Socket soc = new Socket("192.168.9.7",23999);
//create buffered writer
BufferedReader bwin = new BufferedReader(new InputStreamReader(soc.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream()));
while (true) {
        String readFir = bwin.readLine();
        if (readFir == nul) break;
        System.out.println(readFir);
        if(readFir.startsWith("Please")){
            System.out.println("Password Entered");
            bw.write("abc123");
            bw.newLine();
            // instead might have to explicitly write "\r\n"
            // depending platform you're connecting from.
            bw.flush();
        }
        else if(readFir.startsWith("Enter")){
            System.out.println("Enter command");
            bw.write("log set-info 1");
            bw.newLine();
            bw.flush();
            bw.close();  //close buffered Writer
            break;
        } else System.out.println("Skip: " + readFir);
  }

要访问Telnet协议,最好使用像 Apache Commons Net 而不是自己动手。

For accessing Telnet protocol you might be better off using a library such as Apache Commons Net rather than do it yourself.

这篇关于java telnet socket:BufferedReader / BufferedWriter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆