เช•เซเชฒเชพเชฏเช‚เชŸ-เชธเชฐเซเชตเชฐ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เชฒเซ‡เช–เชจ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ Windows, เชญเชพเช— เซฆเซง

เช•เชจเซเชธเซ‹เชฒ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชจเชพ เช•เชธเซเชŸเชฎ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹เชจเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชฒเซ‡เช–เซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€ เชšเชพเชฒเซ เชฐเชพเช–เซ€เช เช›เซ€เช Windows TFTP (เชŸเซเชฐเชฟเชตเชฟเชฏเชฒ เชซเชพเช‡เชฒ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ) เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เชจ เช•เชฐเชตเซ‹ เช…เชถเช•เซเชฏ เช›เซ‡ - เชเช• เชธเชฐเชณ เชซเชพเช‡เชฒ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ.

เช—เชฏเชพ เชตเช–เชคเชจเซ€ เชœเซ‡เชฎ, เช†เชชเชฃเซ‡ เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ€ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเซ€เชถเซเช‚, เชœเชฐเซ‚เชฐเซ€ เช•เซ‹เชก เชœเซ‡เชตเซ€ เชœ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชฒเชพเช—เซ เช•เชฐเชคเซ‹ เช•เซ‹เชก เชœเซ‹เชˆเชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เชถเซเช‚. เชตเชงเซ เชตเชฟเช—เชคเซ‹ เชจเซ€เชšเซ‡.

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

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

เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชฐเซ€เชคเซ‡ 4 เชตเชฐเซเช—เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹:

  • TFTPClientName
  • TFTPServerName
  • TFTPClientTesterName
  • TFTPServerTesterName

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

TFTPClientName

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

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

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

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

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

   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++ เชฎเชพเช‚ เชซเช‚เช•เซเชถเชจ เชชเซ‹เช‡เชจเซเชŸเชฐเซเชธ, เช…เชฅเชตเชพ เชคเซ‹ เชญเชฏเชพเชจเช• เช—เซ‹เชŸเซ‹, เชœเซ‡ เชตเชงเซ เชญเชตเซเชฏ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเชถเซ‡. เชœเซ‹ เชคเชฎเซ‡ เช•เซ‹เชกเชจเซ‡ เชฅเซ‹เชกเซ‹ เชตเชงเซ เชญเชตเซเชฏ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ‹ เชคเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชคเชฎเชพเชฐเชพ เชตเชฟเชšเชพเชฐเซ‹ เชถเซ‡เชฐ เช•เชฐเซ‹. เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช…เชนเซ€เช‚ เชธเซเชŸเซเชฐเชฟเช‚เช—-เชกเซ‡เชฒเชฟเช—เซ‡เชŸ เชถเชฌเซเชฆเช•เซ‹เชถเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‹เชˆ เชกเซ‡เชฒเชฟเช—เซ‡เชŸ เชจเชฅเซ€...

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

TFTPServerName

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

เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฐเชจ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชชเซ‹เชฐเซเชŸ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเซ‹เช•เซ‡เชŸเชฎเชพเช‚เชฅเซ€ เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพเชจเซ‡ เช…เชจเช‚เชค เชฒเซ‚เชชเชฎเชพเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡.

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

เชธเชพเชฐเชพเช‚เชถ เชฎเชพเชŸเซ‡:

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

เชธเช‚เชฆเชฐเซเชญเซ‹:

เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชญเช‚เชกเชพเชฐ
TFTP เชตเชฟเชถเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚
เช เชœ เชตเชพเชค, เชชเชฃ เชฐเชถเชฟเชฏเชจเชฎเชพเช‚

เชธเซ‹เชฐเซเชธ: www.habr.com

DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐ เชงเชฐเชพเชตเชคเซ€ เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ ๐Ÿ”ฅ DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐเซเชธ เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ | ProHoster