เชตเชฟเชจเซเชกเซ‹เช เช•เซเชฒเชพเชฏเช‚เชŸ-เชธเชฐเซเชตเชฐ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€เชเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชฒเช–เชตเชพเชจเซเช‚, เชญเชพเช— 01

เชถเซเชญเซ‡เชšเซเช›เชพเช“.

เช†เชœเซ‡ เชนเซเช‚ เช•เซเชฒเชพเชฏเช‚เชŸ-เชธเชฐเซเชตเชฐ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชฒเช–เชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชœเซ‹เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เชœเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชตเชฟเชจเซเชกเซ‹เช เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€เชเชจเชพ เช•เชพเชฐเซเชฏเซ‹ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชŸเซ‡เชฒเชจเซ‡เชŸ, TFTP, เชตเช—เซ‡เชฐเซ‡ เชตเช—เซ‡เชฐเซ‡, เชถเซเชฆเซเชง เชœเชพเชตเชพเชฎเชพเช‚. เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เชนเซเช‚ เช•เช‚เชˆเชชเชฃ เชจเชตเซเช‚ เชฒเชพเชตเซ€เชถ เชจเชนเซ€เช‚ - เช† เชฌเชงเซ€ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชเช• เชตเชฐเซเชทเชฅเซ€ เชตเชงเซ เชธเชฎเชฏเชฅเซ€ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชฎเชพเชจเซเช‚ เช›เซเช‚ เช•เซ‡ เชนเซ‚เชก เชนเซ‡เช เชณ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชฆเชฐเซ‡เช•เชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€.

เช† เชฌเชฐเชพเชฌเชฐ เช›เซ‡ เชœเซ‡เชจเซ€ เช•เชŸ เชนเซ‡เช เชณ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เชคเซ‡เชจเซ‡ เชฌเชนเชพเชฐ เชจ เช–เซ‡เช‚เชšเชตเชพ เชฎเชพเชŸเซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชฎเชพเชนเชฟเชคเซ€ เช‰เชชเชฐเชพเช‚เชค, เชนเซเช‚ เชซเช•เซเชค เชŸเซ‡เชฒเชจเซ‡เชŸ เชธเชฐเซเชตเชฐ เชตเชฟเชถเซ‡ เชœ เชฒเช–เซ€เชถ, เชชเชฐเช‚เชคเซ เช† เช•เซเชทเชฃเซ‡ เช…เชจเซเชฏ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชชเชฐ เชชเชฃ เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‡ - เชคเซ‡ เชถเซเชฐเซ‡เชฃเซ€เชจเชพ เช†เช—เชณเชจเชพ เชญเชพเช—เซ‹เชฎเชพเช‚ เชนเชถเซ‡.

เชธเซŒ เชชเซเชฐเชฅเชฎ, เชคเชฎเชพเชฐเซ‡ เช เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชŸเซ‡เชฒเชจเซ‡เชŸ เชถเซเช‚ เช›เซ‡, เชคเซ‡เชจเซ€ เชถเซเช‚ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชนเซเช‚ เชธเซเชฐเซ‹เชคเซ‹เชจเซ‡ เชถเชฌเซเชฆเชถเชƒ เชŸเชพเช‚เช•เซ€เชถ เชจเชนเซ€เช‚ (เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹, เชนเซเช‚ เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชตเชฟเชทเชฏ เชชเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ€ เชฒเชฟเช‚เช• เชœเซ‹เชกเซ€เชถ), เชนเซเช‚ เชซเช•เซเชค เชเชŸเชฒเซเช‚ เชœ เช•เชนเซ€เชถ เช•เซ‡ เชŸเซ‡เชฒเชจเซ‡เชŸ เช‰เชชเช•เชฐเชฃเชจเซ€ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชจเซ‡ เชฆเซ‚เชฐเชธเซเชฅ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡, เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชคเซ‡เชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ (เชฎเซ‡เช‚ เชœเชพเชฃเซ€เชœเซ‹เชˆเชจเซ‡ เชธเชฐเซเชตเชฐ เชชเซ‹เชฐเซเชŸเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชฎเซŒเชจ เชฐเชพเช–เซเชฏเซเช‚; เชคเซ‡เชจเชพ เชชเชฐ เชชเช›เซ€เชฅเซ€ เชตเชงเซ). เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชฐ เชเช• เชฒเชพเช‡เชจ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชจเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชชเชพเชธ เช•เชฐเชตเซ€ เชชเชกเชถเซ‡, เชคเซ‡เชจเซ‡ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชชเชฐ เชชเชพเชธ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡, เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชตเชพเช‚เชšเชตเซ‹ เชชเชกเชถเซ‡, เชœเซ‹ เชคเซเชฏเชพเช‚ เช›เซ‡, เชคเซ‹ เชคเซ‡เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชชเชพเช›เซเช‚ เชฎเซ‹เช•เชฒเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‹, เช…เชฅเชตเชพ, เชœเซ‹ เชญเซ‚เชฒเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชœเชฃเชพเชตเซ‹ เช•เซ‡ เช•เช‚เชˆเช• เช–เซ‹เชŸเซเช‚ เช›เซ‡.

เช‰เชชเชฐเซ‹เช•เซเชค เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡, เชคเซ‡ เชฎเซเชœเชฌ, เช…เชฎเชจเซ‡ 2 เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชตเชฐเซเช—เซ‹ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชชเชฐเซ€เช•เซเชทเชฃ เชตเชฐเซเช—เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช…เชฎเซ‡ เชธเชฐเซเชตเชฐ เชถเชฐเซ‚ เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เช•เซเชฒเชพเชฏเช‚เชŸ เช•เชพเชฎ เช•เชฐเชถเซ‡.
เชคเชฆเชจเซเชธเชพเชฐ, เช† เช•เซเชทเชฃเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชณเช–เชพเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช›เซ‡:

  • เชŸเซ‡เชฒเชจเซ‡เชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ
  • TelnetClientTester
  • เชŸเซ‡เชฒเชจเซ‡เชŸ เชธเชฐเซเชตเชฐ
  • TelnetServerTester

เชšเชพเชฒเซ‹ เชคเซ‡ เชฆเชฐเซ‡เช•เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชˆเช:

เชŸเซ‡เชฒเชจเซ‡เชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ

เช† เชคเชฎเชพเชฎ เชตเชฐเซเช— เชชเซเชฐเชพเชชเซเชค เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เช…เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชชเซเชฐเชคเชฟเชธเชพเชฆเซ‹ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช. เช† เช‰เชชเชฐเชพเช‚เชค, เชคเชฎเชพเชฐเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชกเชฟเชตเชพเช‡เชธเชจเชพ เชฎเชจเชธเซเชตเซ€ (เช‰เชชเชฐ เชœเชฃเชพเชตเซเชฏเชพ เชฎเซเชœเชฌ) เชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเชพเชฅเซ€ เชกเชฟเชธเซเช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเซ‹เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เช† เชนเชพเช‚เชธเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชจเซ€เชšเซ‡เชจเชพ เช•เชพเชฐเซเชฏเซ‹ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ:

เชเช• เชซเช‚เช•เซเชถเชจ เช•เซ‡ เชœเซ‡ เชธเซ‹เช•เซ‡เชŸ เชเชกเซเชฐเซ‡เชธเชจเซ‡ เชฆเชฒเซ€เชฒ เชคเชฐเซ€เช•เซ‡ เชฒเซ‡ เช›เซ‡, เช•เชจเซ‡เช•เซเชถเชจ เช–เซ‹เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เช‡เชจเชชเซเชŸ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชธเซเชŸเซเชฐเซ€เชฎเซเชธ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡ (เชธเซเชŸเซเชฐเซ€เชฎ เชตเซ‡เชฐเซ€เชเชฌเชฒ เช‰เชชเชฐ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เช›เซ‡).

 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();
    }
}

เชŸเซ‡เชฒเชจเซ‡เชŸ เชธเชฐเซเชตเชฐ

เช† เชตเชฐเซเช—เชฎเชพเช‚ เชธเซ‹เช•เซ‡เชŸเชฎเชพเช‚เชฅเซ€ เช†เชฆเซ‡เชถ เชฎเซ‡เชณเชตเชตเชพเชจเซ€, เชคเซ‡เชจเซ‡ เช…เชฎเชฒ เชฎเชพเชŸเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เช…เชจเซ‡ เช†เชฆเซ‡เชถเชฎเชพเช‚เชฅเซ€ เชœเชตเชพเชฌเชจเซ‡ เชธเซ‹เช•เซ‡เชŸ เชชเชฐ เชชเชพเช›เชพ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชนเซ‹เชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพเชจเซ‡ เชคเชชเชพเชธเชคเซ‹ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชชเซเชฐเชฅเชฎ, "เชฌเซ‹เช•เซเชธเซเชก เชŸเซ‡เชฒเชจเซ‡เชŸ" เชฎเชพเช‚ เชชเชฃ เชธเชฐเซเชตเชฐ เชกเชฟเชธเซเช•เชจเซ‡ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚, เช† เชฒเซ‡เช–เชฎเชพเช‚ เชธเซเชฐเช•เซเชทเชพเชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡ เช…เชตเช—เชฃเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชœ เชคเซเชฏเชพเช‚ เชจเชฅเซ€. เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เช…เชฅเชตเชพ SSL เชตเชฟเชถเซ‡ เชเช• เชถเชฌเซเชฆ.

เชคเซเชฏเชพเช‚ เชซเช•เซเชค 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹