Gui зависает при отправке команды через telnet (программирование на Java) - PullRequest
0 голосов
/ 14 марта 2019

Здравствуйте. Я пытаюсь установить соединение с устройством с openocd в качестве сервера и telnet в качестве клиентского подключения. Когда я пытаюсь отправить команду через telnet через Java-программирование, мой Java Gui зависает без каких-либо ошибок. Кто-то, пожалуйста, помогите мне понять процедуру отправки команды и получения ответа от telnet.

Основной код выглядит следующим образом:

 public class JTagMain 
{
    static TelnetClient telnet;
    public static void halt() {
        telnet = new TelnetClient();
        try {
            telnet.connect("localhost", 4444);
            String cmd = "halt";
            telnet.getOutputStream().write(cmd.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
        readWrite(telnet.getInputStream(), telnet.getOutputStream(),
                System.in, System.out);
        try {
            telnet.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
        System.exit(0);
    }
    public static final void readWrite(final InputStream remoteInput,final OutputStream remoteOutput, final InputStream localInput,
            final OutputStream localOutput)
    {
        System.out.println("-----readwrite---");
        Thread reader, writer;
        reader = new Thread()
        {
            public void run()
            {
                int ch;
                try
                {
                    while (!interrupted() && (ch = localInput.read()) != -1)
                    {
                        remoteOutput.write(ch);
                        remoteOutput.flush();
                    }
                }
                catch (IOException e)
                {
                    //e.printStackTrace();
                }
            }
        };
        writer = new Thread()
        {
            public void run()
            {
                try
                {
                    Util.copyStream(remoteInput, localOutput);
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                    System.exit(1);
                }
            }
        };

        writer.setPriority(Thread.currentThread().getPriority() + 1);
        writer.start();
        reader.setDaemon(true);
        reader.start();
        try
        {
            writer.join();
            reader.interrupt();
        }
        catch (InterruptedException e)
        {
            //e.printStackTrace();
        }
    }

    public static void telnetconnection()
    {
        telnet = new TelnetClient();
        try {
            telnet.connect("localhost", 4444);
            System.out.println("telnetconnection");
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
    public static void main(String[] args) 
    {
        JtagGui window = new JtagGui();
        window.frame.setVisible(true);
        try{
            telnetconnection();
        }
        catch(Exception e){
            System.out.println("connection failed");
        }
    }
}

Если я пытаюсь вызвать команду halt () через Gui, она зависает без ответа.

Если я попытаюсь использовать командную строку, он даст правильный ответ.

Кто-то, пожалуйста, помогите мне решить эту проблему. Спасибо заранее.

...