首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java : BufferedReader / BufferedWriter

java : BufferedReader / BufferedWriter
EN

Stack Overflow用户
提问于 2012-12-15 17:34:35
回答 1查看 10.1K关注 0票数 5

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

代码语言:javascript
复制
< 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代码来完成这个任务。

  1. 连接到主机23999端口
  2. 输入密码
  3. 输入逗号

代码语言:javascript
复制
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();
    }

这不是working.Actually,我有点搞不懂我应该如何在读者/作者之间进行follow.Very。

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-15 18:07:55

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

代码语言:javascript
复制
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共用网 ),而不是自己使用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13894509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档