เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ•เจฒเจพเจ‡เฉฐเจŸ-เจธเจฐเจตเจฐ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฒเจฟเจ–เจฃเจพ, เจญเจพเจ— 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();
    }
}

เจŸเฉ‡เจฒเจจเฉˆเฉฑเจŸ เจธเจฐเจตเจฐ

เจ‡เจธ เจ•เจฒเจพเจธ เจตเจฟเฉฑเจš เจธเจพเจ•เจŸ เจคเฉ‹เจ‚ เจ•เจฎเจพเจ‚เจก เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ, เจ‡เจธเจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจญเฉ‡เจœเจฃ, เจ…เจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจคเฉ‹เจ‚ เจœเจตเจพเจฌ เจจเฉ‚เฉฐ เจธเจพเจ•เจŸ เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจœเจพเจฃเจฌเฉเฉฑเจ เจ•เฉ‡ เจ‡เฉฐเจชเฉเฉฑเจŸ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเจนเจฟเจฒเจพเจ‚, "เจฌเจพเจ•เจธเจก เจŸเฉ‡เจฒเจจเฉˆเฉฑเจŸ" เจตเจฟเฉฑเจš เจตเฉ€ เจธเจฐเจตเจฐ เจกเจฟเจธเจ• เจจเฉ‚เฉฐ เจซเจพเจฐเจฎเฉˆเจŸ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ, เจ…เจคเฉ‡ เจฆเฉ‚เจœเจพ, เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉ‡ เจฎเฉเฉฑเจฆเฉ‡ เจจเฉ‚เฉฐ เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจ‡เฉฑเจฅเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจเจจเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจœเจพเจ‚ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹