Problem z java socket


(Atuzar) #1

Witam.

Potrzebuję stworzyć aplikację która będzie wykonywała określone polecenia na sprzęcie sieciowym. A na razie próbuje zrobić coś w stylu emulatora terminala telnet. I mam pewien problem. Program łączy mi się z routerem. Ale nie wyświetla mi aktualnej linii. Tzn. łączy mi się z routerem. Powinno dojść do napisu Password. Ten jednak mi się nie wyświetla. Pojawia się dopiero gdy wpisze hasło. Taka sama akcja odbywa się przy wywołaniu jakiegoś polecenia. Przykładowo wpisuje polecenie sh run. Wynik tego polecenia pojawia się dopiero po wciśnięciu 2 entera.

Kod programu:

ublic static void main(String[] args) throws Exception {


    	    Socket mySocket = null;

           PrintWriter out = null;

           BufferedReader in = null;



                   try {


          InetAddress address = InetAddress.getByName("192.168.100.166"); 


               mySocket = new Socket(address,23);


               out = new PrintWriter(mySocket.getOutputStream(), true);

               in = new BufferedReader(new InputStreamReader(mySocket.getInputStream()));

               Scanner scanner = new Scanner(mySocket.getInputStream());

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

    	int pass=0;

    	int pol=0;

    	String userInput;

    	 String test=""; 

    	 while(true){


         while((test=in.readLine())!=null){

        	 if(test.indexOf("More")>=0){

        		 out.println(" ");

                 out.flush(); 

        	 }

        	 if(test.indexOf("Access")<0&&test.indexOf("Router")<0){

        		 System.out.println("wyswietlaj");

        System.out.println(test.length());

         System.out.println(test);

         System.out.println(test=in.readLine());

        	 }else{

        		 System.out.println("wyjdz");

        		 System.out.println(test);

        		 break; 

        	 }

         }

         if(pass==0){

         System.out.println("haslo");

         out.println("cisco"+"\r");

         out.flush();

         wait(1);

         pass=1;

         }else{

        	 System.out.println(test);

        	 System.out.println("czekaj na polecenie");

        	 pol=1;

        	String data = fromKeyboard.readLine();


        		 out.println(data+"\r"); 

        		 out.flush();

         }     

    	 }

                   }catch(Exception e){


                   }


    }