telnet连接输入流阻塞为什么?

时间:2013-07-29 08:56:16

标签: java javascript exec inputstream telnet

package burak;
import java.io.*;

public class telcon {
    public static void main(String[] args) {

        try {
            String[] command=new String[2];
            command[0]="cmd /c start cmd.exe /k \"telnet\"";
            command[1]="92.44.0.60";
            Process p =Runtime.getRuntime().exec(command);  
            try {
                p.waitFor();
            } catch (InterruptedException e) {
                System.out.println(e);
            }

            BufferedReader reader= new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line=null;
            line=reader.readLine();
            File file =new File("rapor.txt");
            file.createNewFile();
            FileWriter writer=new FileWriter(file);
            StringBuilder responseData=new StringBuilder();

            while(line!=null) {
                System.out.println(line);
                responseData.append(line);
                writer.write(line);
                writer.close();
            }

            BufferedReader stdInput=new BufferedReader(new           InputStreamReader(p.getInputStream()) );
            BufferedReader stdError=new BufferedReader(new InputStreamReader(p.getErrorStream()));
            String Error;

            while((Error=stdError.readLine())!=null) {
                System.out.println(Error);  
            }

            while((Error=stdInput.readLine())!=null) {
                System.out.println(Error);  
            }   
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

我想运行telnet执行一些命令我有两个问题首先当我连接到telnet它问我用户名和密码如何通过使用输入密码后的代码执行命令ıcontineude执行命令我的第二个问题输入流不工作readline是空的所有的时间如何才能解决这个问题。谢谢你们。

1 个答案:

答案 0 :(得分:1)

我建议您使用Apache Commons Net Java库(http://commons.apache.org/proper/commons-net/),其中包含许多Internet协议的各种客户端,包括Telnet。我不建议您使用操作系统中的嵌入式telnet客户端。图书馆将会更清洁。

另外,在您的第一个while循环中,您每次迭代都会关闭writer对象,而您不会使用reader进一步阅读。