เดตเดฟเตปเดกเต‹เดธเต เด•เตเดฒเดฏเดจเตเดฑเต-เดธเต†เตผเดตเตผ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดคเดฏเตเดณเตเดณ เดฑเตˆเดฑเตเดฑเดฟเด‚เด—เต เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ, เดญเดพเด—เด‚ 02

เดตเดฟเตปเดกเต‹เดธเต เด•เตบเดธเต‹เตพ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เดณเตเดŸเต† เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดจเดฟเตผเดตเตเดตเดนเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดจเต€เด•เตเด•เดฟเดตเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดคเตเดŸเดฐเตเดจเตเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต TFTP (เดŸเตเดฐเดฟเดตเดฟเดฏเตฝ เดซเดฏเตฝ เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ) - เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดซเดฏเตฝ เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดธเตเดชเตผเดถเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเดพเดตเดฟเดฒเตเดฒ.

เด•เดดเดฟเดžเตเดž เดคเดตเดฃเดคเตเดคเต†เดชเตเดชเต‹เดฒเต†, เดจเดฎเตเด•เตเด•เต เดธเดฟเดฆเตเดงเดพเดจเตเดคเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดชเต‹เด•เดพเด‚, เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดค เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเต เด•เดพเดฃเตเด•, เด…เดคเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด•. เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ - เด•เดŸเตเดŸเต เด•เต€เดดเดฟเตฝ

เดžเดพเตป เดฑเดซเดฑเตปเดธเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเด•เตผเดคเตเดคเดฟ เด’เดŸเตเดŸเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเด‚ เดชเดฐเดฎเตเดชเดฐเดพเด—เดคเดฎเดพเดฏเดฟ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเดจเตเดจ เดฒเดฟเด™เตเด•เตเด•เตพ, เด…เดคเดฟเดจเตเดฑเต† เด•เดพเดฎเตเดชเดฟเตฝ, TFTP เดŽเดจเตเดจเดคเต เด†เด•เตเดธเดธเต เด•เตบเดŸเตเดฐเต‹เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เด‰เดณเตเดณ FTP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเดจเตเดฑเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดตเตเดฏเดคเดฟเดฏเดพเดจเดฎเดพเดฃเต†เดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เดžเดพเตป เดชเดฑเดฏเต‚. เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดตเดฟเดŸเต† เด’เดฐเต เดซเดฏเตฝ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ เด’เดดเดฟเด•เต† เดฎเดฑเตเดฑเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดžเด™เตเด™เดณเตเดŸเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เด—เด‚เดญเต€เดฐเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เต‹เดกเต เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเดฒเดตเดฟเดฒเต† เดคเดคเตเดตเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเดคเดฟเดจเตเด‚, เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเดฟเตฝ เดšเต†เดฑเดฟเดฏ เดฎเดพเดฑเตเดฑเด‚ เดตเดฐเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต - เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดคเดคเตเดตเด™เตเด™เดณเต† เดฎเดพเดฑเตเดฑเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด‡เดจเตเดฑเตผเดซเต‡เดธเต, IMHO, เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฏเตเด•เตเดคเดฟเดธเดนเดตเตเด‚ FTP, TFTP เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดจเดฒเตเดฒ เดตเดถเด™เตเด™เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚, เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เตเดฒเดฏเดจเตเดฑเต เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† IP เดตเดฟเดฒเดพเดธเดตเตเด‚ เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค TFTP เดคเตเดฑเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเตเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจเต (เดธเดพเดงเดพเดฐเดฃ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเตเดฎเดพเดฏเตเดณเตเดณ เดชเตŠเดฐเตเดคเตเดคเด•เตเด•เต‡เดŸเต เด•เดพเดฐเดฃเด‚, เด’เดฐเต เดชเต‹เตผเดŸเตเดŸเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดตเดฟเดŸเตเดŸเตเด•เตŠเดŸเตเด•เตเด•เตเดจเตเดจเดคเต เด‰เดšเดฟเดคเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เด•เดฐเตเดคเดฟ), เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ a เด•เดฃเด•เตเดทเตป เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เด•เตเดฒเดฏเดจเตเดฑเต เด•เดฎเดพเตปเดกเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เด…เดฏเดฏเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ - เดจเต‡เดŸเตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‡เดŸเตเด•, เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹. เดฒเต‹เดœเดฟเด•เต เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดพเตป เดŽเดฒเตเดฒเดพ เดซเดฏเดฒเตเด•เดณเตเด‚ เดฌเตˆเดจเดฑเดฟ เดฎเต‹เดกเดฟเตฝ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป, เดžเดพเตป เดชเดฐเดฎเตเดชเดฐเดพเด—เดคเดฎเดพเดฏเดฟ 4 เด•เตเดฒเดพเดธเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต:

  • TFTP เด•เตเดฒเดฏเดจเตเดฑเต
  • TFTPSเดธเต†เตผเดตเตผ
  • TFTPClientTester
  • TFTPServerTester

เดชเตเดฐเดงเดพเดจเดต เดกเต€เดฌเด—เตเด—เตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เด•เตเดฒเดพเดธเตเด•เตพ เด‰เดณเตเดณเต‚ เดŽเดจเตเดจ เดตเดธเตเดคเตเดค เด•เดพเดฐเดฃเด‚, เดžเดพเตป เด…เดต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด•เต‹เดกเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚; เด…เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฒเดฟเด™เตเด•เต เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚. เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เดชเตเดฐเดงเดพเดจ เด•เตเดฒเดพเดธเตเด•เตพ เดจเต‹เด•เตเด•เตเด‚.

TFTP เด•เตเดฒเดฏเดจเตเดฑเต

เด’เดฐเต เดตเดฟเดฆเต‚เดฐ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดเดชเดฟเดฏเตเด‚ เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเดฑเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเด•, เด‡เตปเดชเตเดŸเตเดŸเต เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เดฎเดพเตปเดกเต เดตเดพเดฏเดฟเด•เตเด•เตเด• (เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด•เต€เดฌเต‹เตผเดกเต), เด…เดคเต เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตเดฏเตเด•, เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•, เด•เต‚เดŸเดพเดคเต† เดจเดฟเด™เตเด™เดณเดพเดฃเต‹ เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต, เดˆ เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดšเตเดฎเดคเดฒ เด’เดฐเต เดซเดฏเตฝ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเด•เดฏเต‹ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเดฃเด‚, เด…เดคเต เด•เตˆเดฎเดพเดฑเตเด•เดฏเต‹ เดจเต‡เดŸเตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเดฃเด‚.

เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เตปเดชเตเดŸเตเดŸเต เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เด•เดฎเดพเตปเดกเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เตเดฒเดฏเดจเตเดฑเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เต‹เดกเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต. เด‡เดตเดฟเดŸเต† เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เด†เด—เต‹เดณ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเต เดชเตเดฑเดคเตเดคเต, เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดชเต‚เตผเดฃเตเดฃ เดตเดพเดšเด•เดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดฐเตเดŸเต† เดจเดฟเดธเตเดธเดพเดฐเดค เด•เดพเดฐเดฃเด‚, เดฒเต‡เด–เดจเด‚ เด“เดตเตผเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เด…เดต เด‰เดฆเตเดงเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

 public void run(String ip, int port)
    {
        this.ip = ip;
        this.port = port;
        try {
            inicialization();
            Scanner keyboard = new Scanner(System.in);
            while (isRunning) {
                getAndParseInput(keyboard);
                sendCommand();
                selector();
                }
            }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

เดˆ เด•เต‹เดกเต เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เดฐเต€เดคเดฟเด•เตพ เดจเต‹เด•เตเด•เดพเด‚:

เด‡เดตเดฟเดŸเต† เดซเดฏเตฝ เด…เดฏเดšเตเดšเต - เด’เดฐเต เดธเตเด•เดพเดจเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดžเด™เตเด™เตพ เดซเดฏเดฒเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดฌเตˆเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดจเดฟเดฐเดฏเดพเดฏเดฟ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด“เดฐเต‹เดจเตเดจเดพเดฏเดฟ เดŽเดดเตเดคเตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดžเด™เตเด™เตพ เด…เดคเต เด…เดŸเดšเตเดšเต เดตเต€เดฃเตเดŸเตเด‚ เดคเตเดฑเด•เตเด•เตเดจเตเดจเต (เดเดฑเตเดฑเดตเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเดฎเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด‡เดคเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดŸเต† เดฑเดฟเดฒเต€เดธเต เด‰เดฑเดชเตเดชเต เดจเตฝเด•เตเดจเตเดจเต), เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เด•เตˆเดฎเดพเดฑเตเดฑเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดžเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

private  void put(String sourcePath, String destPath)
    {

        File src = new File(sourcePath);
        try {

            InputStream scanner = new FileInputStream(src);
            byte[] bytes = scanner.readAllBytes();
            for (byte b : bytes)
                sout.write(b);
            sout.close();
            inicialization();
            System.out.println("nDonen");
            }

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

เดˆ เด•เต‹เดกเต เดถเด•เดฒเด‚ เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดฒเตเดฒเดพเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดจเดฟเดธเตเดธเดพเดฐเดฎเดพเดฃเต, เด•เต‹เดกเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดฌเตเดฒเต‹เด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเต‚. เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดคเตเดฐ เดฌเตˆเดฑเตเดฑเตเด•เตพ เดตเดพเดฏเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดšเต†เดฏเตเดค เดซเดฏเดฒเดฟเดจเตเดฑเต† เดญเดพเดฐเด‚ เดŽเดคเตเดฐเดฏเดพเดฃเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด…เดฑเดฟเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดธเต†เตผเดตเดฑเดฟเดฒเต† เดซเดฏเตฝ เดตเดฒเตเดชเตเดชเด‚ เด’เดฐเต เดจเต€เดฃเตเดŸ เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏเดฏเดพเดฏเดฟ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ 4 เดฌเตˆเดฑเตเดฑเตเด•เตพ เด‡เดตเดฟเดŸเต† เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดต เดชเดฟเดจเตเดจเต€เดŸเต เด’เดฐเต เดธเด‚เด–เตเดฏเดฏเดพเดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต. เด‡เดคเต เดตเดณเดฐเต† เดœเดพเดต เดธเดฎเต€เดชเดจเดฎเดฒเตเดฒ, เดŽเดธเตโ€Œเดเด•เตเด•เต เด‡เดคเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เด‡เดคเต เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดชเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพเด‚ เดจเดฟเดธเตเดธเดพเดฐเดฎเดพเดฃเต - เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เด…เดฑเดฟเดฏเดพเดตเตเดจเตเดจ เด’เดฐเต เดŽเดฃเตเดฃเด‚ เดฌเตˆเดฑเตเดฑเตเด•เตพ เดฒเดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดต เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดžเด™เตเด™เตพ เด’เดฐเต เดตเดฟเดœเดฏ เดธเดจเตเดฆเต‡เดถเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚.

   private void get(String sourcePath, String destPath){
        long sizeOfFile = 0;
        try {


            byte[] sizeBytes = new byte[Long.SIZE];
           for (int i =0; i< Long.SIZE/Byte.SIZE; i++)
           {
               sizeBytes[i] = (byte)sin.read();
               sizeOfFile*=256;
               sizeOfFile+=sizeBytes[i];
           }

           FileOutputStream writer = new FileOutputStream(new File(destPath));
           for (int i =0; i < sizeOfFile; i++)
           {
               writer.write(sin.read());
           }
           writer.close();
           System.out.println("nDONEn");
       }
       catch (Exception e){
            System.out.println(e.getMessage());
       }
    }

เด•เตเดฒเดฏเดจเตเดฑเต เดตเดฟเตปเดกเต‹เดฏเดฟเตฝ get เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ put เด…เดฒเตเดฒเดพเดคเต† เดฎเดฑเตเดฑเตŠเดฐเต เด•เดฎเดพเตปเดกเต เดจเตฝเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด‡เตปเดชเตเดŸเตเดŸเต เดคเต†เดฑเตเดฑเดพเดฃเต†เดจเตเดจเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ showErrorMessage เดซเด‚เด—เตโ€Œเดทเตป เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚. เดจเดฟเดธเตเดธเดพเดฐเดค เด•เดพเดฐเดฃเด‚, เดžเดพเตป เด…เดคเต เด‰เดฆเตเดงเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด‡เตปเดชเตเดŸเตเดŸเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดญเดœเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฃเต เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฐเดธเด•เดฐเด‚. เดžเด™เตเด™เตพ เดธเตเด•เดพเดจเตผ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด•เดŸเดคเตเดคเดฟเดตเดฟเดŸเตเดจเตเดจเต, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดฃเตเดŸเต เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเตเด•เดณเดพเตฝ เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดšเต เด•เดฎเดพเตปเดกเต, เด‰เดฑเดตเดฟเดŸ เดตเดฟเดฒเดพเดธเด‚, เดฒเด•เตเดทเตเดฏเดธเตเดฅเดพเดจ เดตเดฟเดฒเดพเดธเด‚ เดŽเดจเตเดจเดฟเดต เด…เดŸเด™เตเด™เดฟเดฏ เด’เดฐเต เดฒเตˆเตป เดฒเดญเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

    private void getAndParseInput(Scanner scanner)
    {
        try {

            input = scanner.nextLine().split(" ");
            typeOfCommand = input[0];
            sourcePath = input[1];
            destPath = input[2];
        }
        catch (Exception e) {
            System.out.println("Bad input");
        }
    }

เด’เดฐเต เด•เดฎเดพเตปเดกเต เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเต - เดธเตเด•เดพเดจเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเตฝเด•เดฟเดฏ เด•เดฎเดพเตปเดกเต เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด…เดคเต เด…เดฏเดฏเตเด•เตเด•เดพเตป เดจเดฟเตผเดฌเดจเตเดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

    private void sendCommand()
    {
        try {

            for (String str : input) {
                for (char ch : str.toCharArray()) {
                    sout.write(ch);
                }
                sout.write(' ');
            }
            sout.write('n');
        }
        catch (Exception e) {
            System.out.print(e.getMessage());
        }
    }

เดจเตฝเด•เดฟเดฏ เดธเตเดŸเตเดฐเดฟเด‚เด—เดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเดจเดพเดฃเต เดธเต†เดฒเด•เตเดŸเตผ. เด‡เดตเดฟเดŸเต† เดŽเดฒเตเดฒเดพเด‚ เดตเดณเดฐเต† เดฎเดจเต‹เดนเดฐเดฎเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เด•เต‹เดกเต เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเตผเดฌเดจเตเดงเดฟเดคเดฎเดพเดฏเดฟ เดชเตเดฑเดคเตเดคเตเด•เดŸเด•เตเด•เตเดจเตเดจ เดเดฑเตเดฑเดตเตเด‚ เดฎเดฟเด•เดšเตเดš เดŸเตเดฐเดฟเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด‡เดคเดฟเดจเต เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเดฃเด‚ C# เดฒเต† เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเตเด•เตพ, C++ เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเด‚เด—เตโ€Œเดทเตป เดชเต‹เดฏเดฟเดจเตเดฑเดฑเตเด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ at เดเดฑเตเดฑเดตเตเด‚ เดญเดฏเดพเดจเด•เดตเตเด‚ เดญเดฏเด™เตเด•เดฐเดตเตเดฎเดพเดฏ เด—เต‹เดŸเตเดŸเต‹, เด‡เดคเต เดฎเดจเต‹เดนเดฐเดฎเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‹เดกเต เดŽเด™เตเด™เดจเต† เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฎเดจเต‹เดนเดฐเดฎเดพเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเดฎเต†เด™เตเด•เดฟเตฝ, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเดฒเต† เดตเดฟเดฎเตผเดถเดจเด™เตเด™เดณเต† เดžเดพเตป เดธเตเดตเดพเด—เดคเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดตเดฟเดŸเต† เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต-เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเต เดจเดฟเด˜เดฃเตเดŸเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเต เด‡เดฒเตเดฒ...

    private void selector()
    {
        do{
            if (typeOfCommand.equals("get")){
                get(sourcePath, destPath);
                break;
            }
            if (typeOfCommand.equals("put")){
                put(sourcePath, destPath);
                break;
            }
            showErrorMessage();
        }
        while (false);
    }
}

TFTPSเดธเต†เตผเดตเตผ

เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต, เดตเดฒเดฟเดฏเดคเต‹เดคเดฟเตฝ, เด•เดฎเดพเตปเดกเตเด•เตพ เด•เต€เดฌเต‹เตผเดกเดฟเตฝ เดจเดฟเดจเตเดจเดฒเตเดฒ, เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเต. เดšเดฟเดฒ เดฐเต€เดคเดฟเด•เตพ เดชเตŠเดคเตเดตเต† เดธเดฎเดพเดจเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด…เดต เด‰เดฆเตเดงเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เดณเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดธเตเดชเตผเดถเดฟเด•เตเด•เตเด‚.

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดฑเตบ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด‡เตปเดชเตเดŸเตเดŸเดพเดฏเดฟ เด’เดฐเต เดชเต‹เตผเดŸเตเดŸเต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด’เดฐเต เดŽเดฑเตเดฑเต‡เดฃเตฝ เดฒเต‚เดชเตเดชเดฟเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

    public void run(int port) {
            this.port = port;
            incialization();
            while (true) {
                getAndParseInput();
                selector();
            }
    }

เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฑเตˆเดฑเตเดฑเต เดธเตเดŸเตเดฐเต€เด‚ เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดฒเตเดฒเดพ เด‡เตปเดชเตเดŸเตเดŸเต เดฌเตˆเดฑเตเดฑเตเด•เดณเตเด‚ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ writeToFileFromSocket เดฐเต€เดคเดฟ เดชเตŠเดคเดฟเดฏเตเดจเตเดจ เดชเตเดŸเตเดŸเต เดฐเต€เดคเดฟ, เดฑเตˆเดฑเตเดฑเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏเดคเดพเดฏเดฟ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

    private  void put(String source, String dest){
            writeToFileFromSocket();
            System.out.print("nDonen");
    };
    private void writeToFileFromSocket()
    {
        try {
            FileOutputStream writer = new FileOutputStream(new File(destPath));
            byte[] bytes = sin.readAllBytes();
            for (byte b : bytes) {
                writer.write(b);
            }
            writer.close();
        }
        catch (Exception e){
            System.out.println(e.getMessage());
        }
    }

เด—เต†เดฑเตเดฑเต เดฎเต†เดคเตเดคเต‡เดกเต เดธเต†เตผเดตเตผ เดซเดฏเตฝ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เด•เตเดฒเดฏเดจเตเดฑเต เดตเดถเดคเตเดคเตเดณเตเดณ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เด‡เดคเดฟเดจเด•เด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เด’เดฐเต เดซเดฏเตฝ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เด•เตˆเดฎเดพเดฑเดพเตป เด…เดคเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เดจเดฟเด™เตเด™เตพ เด…เดฑเดฟเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด’เดฐเต เดจเต€เดฃเตเดŸ เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด…เดคเดฟเดจเต† 4 เดฌเตˆเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดถเตเดฐเต‡เดฃเดฟเดฏเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเดšเตเดšเต เดฌเตˆเดฑเตเดฑเต-เดฌเตˆ-เดฌเตˆเดฑเตเดฑเต เด†เดฏเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต, เดคเตเดŸเตผเดจเตเดจเต, เด•เตเดฒเดฏเดจเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เด’เดฐเต เดจเดฎเตเดชเดฑเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเต เด…เดธเด‚เดฌเดฟเตพ เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‡เตปเดชเตเดŸเตเดŸเต เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเดšเตเดšเต เดซเดฏเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดฌเตˆเดฑเตเดฑเตเด•เดณเตเด‚ เดžเดพเตป เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต.


 private  void get(String source, String dest){
        File sending = new File(source);
        try {
            FileInputStream readFromFile = new FileInputStream(sending);
            byte[] arr = readFromFile.readAllBytes();
            byte[] bytes = ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong(sending.length()).array();
            for (int i = 0; i<Long.SIZE / Byte.SIZE; i++)
                sout.write(bytes[i]);
            sout.flush();
            for (byte b : arr)
                sout.write(b);
        }
        catch (Exception e){
            System.out.println(e.getMessage());
        }
    };

getAndParseInput เดฐเต€เดคเดฟ เด•เตเดฒเดฏเดจเตเดฑเดฟเดฒเต‡เดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เด•เต€เดฌเต‹เตผเดกเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เดตเตเดฏเดคเตเดฏเดพเดธเด‚. เดธเต†เดฒเด•เตโ€ŒเดŸเตผ เดชเต‹เดฒเต† เด•เต‹เดกเตเด‚ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเดพเดฃเต.
เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเดฎเดพเดฐเด‚เดญเด‚ เด•เต‹เดกเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เดธเตเดฅเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เดˆ เดจเดŸเดชเตเดชเดพเด•เตเด•เดฒเดฟเดจเตเดณเตเดณเดฟเตฝ, เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏ เดถเต‡เดทเด‚, เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เดฎเต†เดฎเตเดฎเดฑเดฟ เดฒเต€เด•เตเด•เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฐเดฟเดฐเด•เตเดท เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเต.

    private void  incialization()
    {
        try {
            serverSocket = new ServerSocket(port);
            socket = serverSocket.accept();
            sin = socket.getInputStream();
            sout = socket.getOutputStream();
        }
        catch (Exception e) {
            System.out.print(e.getMessage());
        }
    }

เดšเตเดฐเตเด•เตเด•เดฟ เดชเดฑเดžเตเดžเดพเตฝ:

เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพ เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเตฝ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดตเตเดฏเดคเดฟเดฏเดพเดจเด‚ เดŽเดดเตเดคเดฟ, เด…เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเดšเตเดšเต. เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เดžเดพเตป เด‡เดตเดฟเดŸเต† เด…เดฎเต‡เดฐเดฟเด•เตเด• เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เด•เต‚เดŸเตเดคเตฝ เดชเตเดคเดฟเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดŽเดดเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดนเดฌเตเดฐเต†เดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเดฎเดพเดจเดฎเดพเดฏ เดฒเต‡เด–เดจเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† cmd เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดชเดฐเดฎเตเดชเดฐ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฏเดฟ เด…เดคเดฟเตฝ เดธเตเดชเตผเดถเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดฑเต†เดซเดฑเตปเดธเตเด•เตพ:

เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดถเต‡เด–เดฐเด‚
เดŸเดฟเดŽเดซเตเดŸเดฟเดชเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ
เด…เดคเต‡ เด•เดพเดฐเตเดฏเด‚, เดชเด•เตเดทเต‡ เดฑเดทเตเดฏเตป เดญเดพเดทเดฏเดฟเตฝ

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•