2013-07-29 99 views
2
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通過使用代碼執行命令後輸入密碼和我的第二個問題inputstream不工作readline是空的所有時間如何解決這個問題。謝謝你的幫助telnet連接inputstream阻塞爲什麼?

+0

你*可以*使用此:http://svn.apache.org/repos/asf/commons/proper/net/tags/NET_1_0_0/src/java/examples/weatherTelnet.java來做到這一點。但是,你**不能**以編程方式進行,這可能是你想要的。 – Thufir

回答

1

我推薦你使用Apache Commons Net Java庫(http://commons.apache.org/proper/commons-net/),它包含許多Internet協議的各種客戶端,包括Telnet。我不建議你使用操作系統中的嵌入式telnet客戶端。圖書館的事情會更清潔。

在addtion,在你第一次while循環,您要關閉writer對象每次迭代,你不與你reader進一步閱讀。

+0

我搜索commons.apache,但它很難理解我和我沒有改變代碼到我想要的那就是爲什麼我選擇代碼 – user2587623

+0

一切都在圖書館的javadoc解釋(http://commons.apache.org/proper/commons -net/javadocs中/ API-3.3/index.html中)。如果你打算學習Java,你應該開始學習通過Javadocs習慣圖書館和API。因爲你會經常面對兩個。 –

+0

OutputStream outstr = tc.getOutputStream(); byte [] buff = new byte [1024]; int ret_read = 0; do {嘗試 { ret_read = System.in.read(buff); if(ret_read> 0)在這個apache.common.telnet代碼中的代碼讀取密鑰字節可以給你的建議閱讀字符串我需要發送show ip ospf inter brief命令 – user2587623