2014-06-08 68 views
1
TelnetClient telnet = new TelnetClient(); 
    telnet.connect("192.168.0.6", 23); 
    PrintWriter out = 
      new PrintWriter(telnet.getOutputStream(), true); 

    DataInputStream in = 
      new DataInputStream(telnet.getInputStream()); 


     BufferedReader stdIn = 
      new BufferedReader(
       new InputStreamReader(System.in)); 

     String userInput; 
     byte buffer[] = new byte[1024]; 
     int bytesRead; 

     while ((bytesRead=in.read(buffer,0,1024)) != -1) { // read from server 


      System.out.print(new String(buffer, 0, bytesRead, "UTF-8")); 
      userInput = stdIn.readLine(); 
      if (userInput != null) { 
       out.println(userInput); 
       out.flush(); 
      } 


     } 
    telnet.disconnect(); 

你好,我在連接到服務器的過程中遇到了這個程序的問題。 這個程序應該允許我啓動一個到服務器的telnet連接,並向它發送一些命令並返回這些結果,但是當我開始連接時,它只返回服務器的HELLO(歡迎使用Microsoft Telnet服務)而不是包括LOGIN在內的全部消息: 當我發送命令時,這些命令的響應被延遲。 例如,我寫「DIR」,只有當我按下輸入兩次時才寫回應... 我哪裏錯了?請幫幫我。TelnetClient java流

+0

您需要兩個獨立的線程。 – Thufir

+0

如果我寫了一個命令,然後我讀了響應爲什麼我需要兩個單獨的線程? – user3272521

+1

它似乎有效。我愛你。當我編寫完整的代碼時,我會發布它。 – user3272521

回答

0

當試圖使用基於會話的協議連接到網絡服務(Telnet,FTP,SSH ..)並需要保持連接活動並與服務交互時,建議使用可用的Java API (只有當你被要求沒有第三方庫時),在你的情況下,你可以使用Apache Common Net這提供了一系列有用的功能,使用許多網絡協議(包括Telnet)連接到服務器。

+0

謝謝你的回覆,但我只是使用Apache公用網。類TelnetClient是它的一部分。 – user3272521

+0

@ user3272521我看到,對於雙擊命中輸入的問題,在寫入響應輸出流之前,嘗試設置'userInput = userInput +'\ r \ n「;'。 – Mifmif

+0

是的,它解決了雙擊,但其餘是一樣的:( – user3272521