рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 01

рдирдорд╕реНрддреЗред

рдЖрдЬ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдорд╛рдирдХ рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдЬреИрд╕реЗ рдЯреЗрд▓рдиреЗрдЯ, рдЯреАрдПрдлрдЯреАрдкреА, рд╡рдЧреИрд░рд╣, рд╡рдЧреИрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рд╢реБрджреНрдз рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд▓рд╛рдКрдВрдЧрд╛ - рдпреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдХрдЯ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдмрд┐рд▓реНрдХреБрд▓ рдЗрд╕реА рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЗрд╕реЗ рд▓рдВрдмрд╛ рди рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдХреЗрд╡рд▓ рдЯреЗрд▓рдиреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдкрд░ рднреА рд╕рд╛рдордЧреНрд░реА рд╣реИ - рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЖрдЧреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╣реЛрдЧреАред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЯреЗрд▓рдиреЗрдЯ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╢рдмреНрджрд╢рдГ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдореИрдВ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡рд┐рд╖рдп рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд▓рд┐рдВрдХ рд╕рдВрд▓рдЧреНрди рдХрд░реВрдВрдЧрд╛), рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЯреЗрд▓рдиреЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрдХ рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдпрд╣реАрдВ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ (рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЪреБрдк рд░рдЦрд╛; рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреА рдЬрд╛рдПрдЧреА)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдПрдХ рд▓рд╛рдЗрди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреА рд╣реЛрдЧреА, рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛, рдпрджрд┐ рдХреЛрдИ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдпрд╛ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрджрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ 2 рд╡рд░реНрдХрд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдФрд░ рдХреБрдЫ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рддрджрдиреБрд╕рд╛рд░, рдлрд┐рд▓рд╣рд╛рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдЯреЗрд▓рдиреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ
  • рдЯреЗрд▓рдиреЗрдЯрдХреНрд▓рд╛рдЗрдВрдЯрдЯреЗрд╕реНрдЯрд░
  • рдЯреЗрд▓рдиреЗрдЯрд╕рд░реНрд╡рд░
  • рдЯреЗрд▓рдиреЗрдЯрд╕рд░реНрд╡рд░рдЯреЗрд╕реНрдЯрд░

рдЖрдЗрдП рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВ:

рдЯреЗрд▓рдиреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ

рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдкреНрдд рдЖрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХрд┐рд╕реА рд░рд┐рдореЛрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдордирдорд╛рдиреЗ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП:

рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдПрдХ рд╕реЙрдХреЗрдЯ рдкрддреЗ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ (рд╕реНрдЯреНрд░реАрдо рд╡реИрд░рд┐рдПрдмрд▓ рдКрдкрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдкреВрд░реНрдг рд╕реНрд░реЛрдд рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИрдВ)ред

 public void run(String ip, int port)
    {
        try {
            Socket socket = new Socket(ip, port);
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
            Scanner keyboard = new Scanner(System.in);
            reader = new Thread(()->read(keyboard, sout));
            writer = new Thread(()->write(sin));
            reader.start();
            writer.start();
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдирд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ - рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ 23 рд╣реИ


    public void run(String ip)
    {
        run(ip, 23);
    }

рдлрд╝рдВрдХреНрд╢рди рдХреАрдмреЛрд░реНрдб рд╕реЗ рд╡рд░реНрдг рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реЙрдХреЗрдЯ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ - рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд▓рд╛рдЗрди рдореЛрдб рдореЗрдВ, рдХреИрд░реЗрдХреНрдЯрд░ рдореЛрдб рдореЗрдВ рдирд╣реАрдВ:


    private void read(Scanner keyboard, OutputStream sout)
    {
        try {
            String input = new String();
            while (true) {
                input = keyboard.nextLine();
                for (char i : (input + " n").toCharArray())
                    sout.write(i);
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

рдлрд╝рдВрдХреНрд╢рди рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ


    private void write(InputStream sin)
    {
        try {
            int tmp;
            while (true){
                tmp = sin.read();
                System.out.print((char)tmp);
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛ рд░рд┐рд╕реЗрдкреНрд╢рди рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ


    public void stop()
    {
        reader.stop();
        writer.stop();
    }
}

рдЯреЗрд▓рдиреЗрдЯрд╕рд░реНрд╡рд░

рдЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реЙрдХреЗрдЯ рд╕реЗ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдЙрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдФрд░ рдХрдорд╛рдВрдб рд╕реЗ рд╕реЙрдХреЗрдЯ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, "рдмреЙрдХреНрд╕рд┐рдВрдЧ рдЯреЗрд▓рдиреЗрдЯ" рдореЗрдВ рднреА рд╕рд░реНрд╡рд░ рдбрд┐рд╕реНрдХ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдореБрджреНрджрд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдпрд╛ рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рдмреНрджред

рдХреЗрд╡рд▓ 2 рдХрд╛рд░реНрдп рд╣реИрдВ (рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИ), рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЙрдЪрд┐рдд рд▓рдЧрд╛ред

 boolean isRunning = true;
    public void run(int port)    {

        (new Thread(()->{ try {
            ServerSocket ss = new ServerSocket(port); // ╤Б╨╛╨╖╨┤╨░╨╡╨╝ ╤Б╨╛╨║╨╡╤В ╤Б╨╡╤А╨▓╨╡╤А╨░ ╨╕ ╨┐╤А╨╕╨▓╤П╨╖╤Л╨▓╨░╨╡╨╝ ╨╡╨│╨╛ ╨║ ╨▓╤Л╤И╨╡╤Г╨║╨░╨╖╨░╨╜╨╜╨╛╨╝╤Г ╨┐╨╛╤А╤В╤Г
            System.out.println("Port "+port+" is waiting for connections");

            Socket socket = ss.accept();
            System.out.println("Connected");
            System.out.println();

            // ╨С╨╡╤А╨╡╨╝ ╨▓╤Е╨╛╨┤╨╜╨╛╨╣ ╨╕ ╨▓╤Л╤Е╨╛╨┤╨╜╨╛╨╣ ╨┐╨╛╤В╨╛╨║╨╕ ╤Б╨╛╨║╨╡╤В╨░, ╤В╨╡╨┐╨╡╤А╤М ╨╝╨╛╨╢╨╡╨╝ ╨┐╨╛╨╗╤Г╤З╨░╤В╤М ╨╕ ╨╛╤В╤Б╤Л╨╗╨░╤В╤М ╨┤╨░╨╜╨╜╤Л╨╡ ╨║╨╗╨╕╨╡╨╜╤В╤Г.
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();

            Map<String, String> env = System.getenv();
            String wayToTemp = env.get("TEMP") + "tmp.txt";
            for (int i :("Connectednnr".toCharArray()))
                sout.write(i);
            sout.flush();

            String buffer = new String();
            while (isRunning) {

                int intReader = 0;
                while ((char) intReader != 'n') {
                    intReader = sin.read();
                    buffer += (char) intReader;
                }


                final String inputToSubThread = "cmd /c " + buffer.substring(0, buffer.length()-2) + " 2>&1";


                new Thread(()-> {
                    try {

                        Process p = Runtime.getRuntime().exec(inputToSubThread);
                        InputStream out = p.getInputStream();
                        Scanner fromProcess = new Scanner(out);
                        try {

                            while (fromProcess.hasNextLine()) {
                                String temp = fromProcess.nextLine();
                                System.out.println(temp);
                                for (char i : temp.toCharArray())
                                    sout.write(i);
                                sout.write('n');
                                sout.write('r');
                            }
                        }
                        catch (Exception e) {
                            String output = "Something gets wrong... Err code: "+ e.getStackTrace();
                            System.out.println(output);
                            for (char i : output.toCharArray())
                                sout.write(i);
                            sout.write('n');
                            sout.write('r');
                        }

                        p.getErrorStream().close();
                        p.getOutputStream().close();
                        p.getInputStream().close();
                        sout.flush();

                    }
                    catch (Exception e) {
                        System.out.println("Error: " + e.getMessage());
                    }
                }).start();
                System.out.println(buffer);
                buffer = "";

            }
        }
        catch(Exception x) {
            System.out.println(x.getMessage());
        }})).start();

    }

рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдХрдорд╛рдВрдб рдПрдВрдб рдХреИрд░реЗрдХреНрдЯрд░ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕реЙрдХреЗрдЯ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдХрд▓рд╛рд╢реНрдирд┐рдХреЛрд╡ рдЕрд╕реЙрд▓реНрдЯ рд░рд╛рдЗрдлрд▓ рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реИред

рддрджрдиреБрд╕рд╛рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рднрд╛рд░ рд╣реИ:

 public void run()
    {
        run(23);
    }

рдЦреИрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрдХрдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рднреА рддреБрдЪреНрдЫ рд╣реИ, рдпрд╣ рд╢рд╛рд╢реНрд╡рдд рд▓реВрдк рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред

    public void stop()
    {
        System.out.println("Server was stopped");
        this.isRunning = false;
    }

рдореИрдВ рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рд╡реЗ рдиреАрдЪреЗ рд╣реИрдВ - рд╡реЗ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдЧрд┐рдЯ рдкрд░ рд╣реИ.

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдХреБрдЫ рд╢рд╛рдореЛрдВ рдореЗрдВ рдЖрдк рдореБрдЦреНрдп рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм, рдЬрдм рд╣рдо рдХрд┐рд╕реА рджреВрд░рд╕реНрде рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЯреЗрд▓реАрдиреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ - рдЬрд╛рджреВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИ)

рддреЛ, рд▓рд┐рдВрдХ:
рд╕рднреА рд╕реНрд░реЛрдд рдпрд╣реАрдВ рдереЗ, рд╣реИрдВ рдФрд░ рд░рд╣реЗрдВрдЧреЗ
рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ