2014-10-30 4 views
1

Я не очень хорошо знаком с telnet, поэтому я был бы признателен за помощь любого желающего. У меня есть интеллектуальные разъемы, которые можно включать и выключать через интерфейс telnet. Я всегда использую telnet через командную строку для подключения к серверу Digi X4 connect port (через> telnet). Если я хочу включить/выключить сокет, я должен теперь ввести: «12 set pow = on/off» и нажать enter. Я хотел бы реализовать это через java с помощью telnet-клиента. Теперь я могу подключиться к порту (благодаря ответам, размещенным на этой платформе), но отправить команду на включение/выключение устройств сложно для меня. Мне еще нужно ввести «12 set pow = on/off» и нажать enter. Я бы хотел, чтобы Java отправила эту команду. Ниже мой код Java. Буду признателен за вашу помощь. BabОтправьте команду строки в сокет

public class TelnetConnection { 

    static TelnetClient tc = null; 

    public static void main(String[] a) throws Exception 
    { 
     String[] args = {"122.1222.181.45","8085"}; 
     System.out.println("arg value: "+args); 

     if(args.length < 1) 
     { 
      System.err.println("Usage: Error <remote-ip> [<remote-port>]"); 
      System.exit(1); 
     } 

     String remoteip = args[0]; 

     int remoteport; 

     if (args.length > 1) 
     { 
      remoteport = (new Integer(args[1])).intValue(); 
     } 
     else 
     { 
      remoteport = 7000; 
     } 

      tc = new TelnetClient(); 

     while (true) 
     { 
      boolean end_loop = false; 
      try 
      { 
       tc.connect(remoteip, remoteport); 


       Thread reader = new Thread (new TelnetClientExample()); 
       tc.registerNotifHandler(new TelnetClientExample()); 
       System.out.println("TelnetClientExample"); 

       reader.start(); 
       OutputStream outstr = tc.getOutputStream(); 
       PrintWriter out = new PrintWriter(outstr); 
       String buff = "11 set pow=on"; 
       //int ret_read = 0; 
       do 
       { 
        try 
        { 
         out.print(buff); 
         outstr.flush(); 
        } 
        catch (IOException e) 
        { 
         System.err.println("Error"); 
         end_loop = true; 
        } 
       } 
       while((true) && (end_loop == false)); 

       try 
       { 
        tc.disconnect(); 
       } 
       catch (IOException e) 
       { 
          System.err.println("Error"); 
       } 
      } 
      catch (IOException e) 
      { 
        System.err.println("Exception while connecting:" + e.getMessage()); 
        System.exit(1); 
      } 
     } 
    } 
} 

ответ

0

Пробег: tring buff = "11 set pow=on\n"; сервер может нуждаться в новой строке для обнаружения конца команды.

Кстати, цикл, который бесконечно посылает сервер, выглядит тревожным.

0

Вам необходимо отправить терминатор линии, соответствующий 'и нажмите Enter'.

Терминатор линии в Telnet определяется как \r\n.

Смежные вопросы