ืฉืจื™ื™ื‘ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืžื™ื˜ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ Windows ืงืœื™ืขื ื˜-ืกืขืจื•ื•ืขืจ ื™ื•ื˜ื™ืœืึทื˜ื™ื–, ื˜ื™ื™ืœ 02

ืงืึทื ื˜ื™ื ื™ื•ื™ื ื’ ื“ื™ ืึธื ื’ืึธื™ื ื’ ืกืขืจื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืึทืจื˜ื™ืงืœืขืŸ ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ืฆื• ืžื ื”ื’ ื™ืžืคึผืœืึทืžืึทื ืฅ ืคื•ืŸ Windows ืงืึทื ืกืึธื•ืœ ื™ื•ื˜ื™ืœืึทื˜ื™ื–, ืžื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ื”ืขืœืคึฟืŸ ืึธื‘ืขืจ ืึธื ืจื™ืจืŸ TFTP (ื˜ืจื™ื•ื•ื™ืึทืœ ื˜ืขืงืข ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืคึผืจืึธื˜ืึธืงืึธืœ) - ืึท ืคึผืฉื•ื˜ ื˜ืขืงืข ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืคึผืจืึธื˜ืึธืงืึธืœ.

ื•ื•ื™ ืœืขืฆื˜ืข ืžืึธืœ, ืœืึธื–ืŸ ืื•ื ื“ื– ื‘ืขืงื™ืฆืขืจ ื’ื™ื™ืŸ ืื™ื‘ืขืจ ื“ื™ ื˜ืขืึธืจื™ืข, ื–ืขืŸ ื“ื™ ืงืึธื“ ื•ื•ืึธืก ื™ืžืคึผืœืึทืžืึทื ืฅ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืขื ืœืขืš ืฆื• ื“ื™ ืคืืจืœืื ื’ื˜, ืื•ืŸ ืึทื ืึทืœื™ื™ื– ืขืก. ืžืขืจ ืคืจื˜ื™ื - ืื•ื ื˜ืขืจ ื“ื™ ืฉื ื™ื™ึทื“ืŸ

ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื ืึธื›ืžืึทื›ืŸ ืื•ืŸ ืคึผืึทืคึผ ืจืขืคึฟืขืจืขื ืฅ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข, ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ืขืŸ ืฆื• ื•ื•ืึธืก ืงืขื ืขืŸ ื˜ืจืึทื“ื™ืฉืึทื ืึทืœื™ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืขื˜ ื ืึธืจ ื–ืึธื’ืŸ ืึทื– ืื™ืŸ ื–ื™ื™ืŸ ื”ืึทืจืฅ, TFTP ืื™ื– ืึท ืกื™ืžืคึผืœืึทืคื™ื™ื“ ื•ื•ืขืจื™ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืคื˜ืคึผ ืคึผืจืึธื˜ืึธืงืึธืœ, ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ. ืื™ื– ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ, ืื•ืŸ ืื™ืŸ ืคืึทืงื˜ ืขืก ืื™ื– ื’ืึธืจื ื™ืฉื˜ ื“ืึธ ืึทื—ื•ืฅ ืงืึทืžืึทื ื“ื– ืคึฟืึทืจ ืจื™ืกื™ื•ื•ื™ื ื’ ืื•ืŸ ื˜ืจืึทื ืกืคืขืจื™ื ื’ ืึท ื˜ืขืงืข. ืึธื‘ืขืจ, ืื™ืŸ ืกื“ืจ ืฆื• ืžืึทื›ืŸ ืื•ื ื“ื–ืขืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืึท ื‘ื™ืกืœ ืžืขืจ ืขืœืขื’ืึทื ื˜ ืื•ืŸ ืฆื•ื’ืขืคืืกื˜ ืฆื• ื“ื™ ืงืจืึทื ื˜ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ ืฉืจื™ื™ื‘ืŸ ืงืึธื“, ื“ื™ ืกื™ื ื˜ืึทืงืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ืกืœ ื’ืขื‘ื™ื˜ืŸ - ื“ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ ื“ื™ ืคึผืจื™ื ืฆื™ืคึผืŸ ืคื•ืŸ ืึธืคึผืขืจืึทืฆื™ืข, ืึธื‘ืขืจ ื“ื™ ืฆื•ื‘ื™ื ื“, IMHO, ื•ื•ืขืจื˜ ืึท ื‘ื™ืกืœ ืžืขืจ ืœืึทื“ื–ืฉื™ืงืึทืœ ืื•ืŸ ืงืึทืžื‘ื™ื™ื ื– ื“ื™ positive ืึทืกืคึผืขืงืฅ ืคื•ืŸ FTP ืื•ืŸ TFTP.

ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, ื•ื•ืขืŸ ืœืึธื ื˜ืฉื˜, ื“ืขืจ ืงืœื™ืขื ื˜ ืจื™ืงื•ื•ืขืก ื“ื™ ืกืขืจื•ื•ืขืจ 'ืก IP ืึทื“ืจืขืก ืื•ืŸ ื“ื™ ืคึผืึธืจื˜ ืื•ื™ืฃ ื•ื•ืึธืก ืžื ื”ื’ TFTP ืื™ื– ืึธืคืŸ (ืจืขื›ื˜ ืฆื• ื™ื ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืžื™ื˜ ื“ื™ ื ืึธืจืžืึทืœ ืคึผืจืึธื˜ืึธืงืึธืœ, ืื™ืš ื’ืขื”ืืœื˜ืŸ ืขืก ืฆื•ื ืขืžืขืŸ ืฆื• ืœืึธื–ืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึท ืคึผืึธืจื˜), ื“ืขืจื ืึธืš ืึท ืงืฉืจ ืึทืงืขืจื–, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื•ื•ืึธืก ื“ืขืจ ืงืœื™ืขื ื˜ ืงืขื ืขืŸ ืฉื™ืงืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืงืึทืžืึทื ื“ื– - ื‘ืึทืงื•ืžืขืŸ ืึธื“ืขืจ ืฉื˜ืขืœืŸ, ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึธื“ืขืจ ืฉื™ืงืŸ ืึท ื˜ืขืงืข ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ. ื›ืœ ื˜ืขืงืขืก ื–ืขื ืขืŸ ื’ืขืฉื™ืงื˜ ืื™ืŸ ื‘ื™ื™ื ืขืจื™ ืžืึธื“ืข ืฆื• ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ ื“ื™ ืœืึธื’ื™ืง.

ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ, ืื™ืš ื˜ืจืึทื“ื™ืฉืึทื ืึทืœื™ ื’ืขื•ื•ื™ื™ื ื˜ 4 ืงืœืืกืŸ:

  • TFTPClient
  • ื˜ืคื˜ืคึผืกืขืจื•ื•ืขืจ
  • TFTPClientTester
  • TFTPServerTester

ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ื˜ืขืกื˜ื™ื ื’ ืงืœืืกืŸ ืขืงืกื™ืกื˜ื™ืจืŸ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื“ื™ื‘ืึทื’ื™ื ื’ ื“ื™ ื”ื•ื™ืคึผื˜ ืึธื ืขืก, ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ืคื•ื ืึทื ื“ืขืจืงืœื™ื™ึทื‘ืŸ ื–ื™ื™, ืึธื‘ืขืจ ื“ืขืจ ืงืึธื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืึท ืœื™ื ืง ืฆื• ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ. ืื™ืฆื˜ ืื™ืš ื•ื•ืขื˜ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืงืœืืกืŸ.

TFTPClient

ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ื“ืขื ืงืœืึทืก ืื™ื– ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ืึท ื•ื•ื™ื™ึทื˜ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ ื–ื™ื™ืŸ 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());
        }
    }

ื“ืขืจ ืงืึธื“ ืคืจืึทื’ืžืขื ื˜ ื‘ืืฉืจื™ื™ื‘ื˜ ืจื™ื˜ืจื™ื•ื•ื™ื ื’ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ. ืึทืœืฅ ืื™ื– ื•ื•ื™ื“ืขืจ ื˜ืจื™ื•ื•ื™ืึทืœ, ื ืึธืจ ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืœืึธืง ืคื•ืŸ ืงืึธื“ ืื™ื– ืคื•ืŸ ืื™ื ื˜ืขืจืขืก. ื›ึผื“ื™ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืคึผื•ื ืงื˜ ื•ื•ื™ ืคื™ืœืข ื‘ื™ื˜ืขืก ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ืคึฟื•ืŸ ื“ื™ ื›ืึธืœืขืœ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸ ื•ื•ื™ ืคื™ืœ ื“ื™ ื˜ืจืึทื ืกืคืขืจื“ ื˜ืขืงืข ื•ื•ื™ื™ื–. ื“ื™ ื˜ืขืงืข ื’ืจื™ื™ืก ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ื– ืจืขืคึผืจื™ื–ืขื ื˜ื™ื“ ื•ื•ื™ ืึท ืœืึทื ื’ ื™ื ื˜ืึทื“ื–ืฉืขืจ, ืึทื–ื•ื™ 4 ื‘ื™ื˜ืขืก ื–ืขื ืขืŸ ืื ื’ืขื ื•ืžืขืŸ ื“ืึธ, ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ืขืจื ืึธืš ืงืึธื ื•ื•ืขืจื˜ืขื“ ืื™ืŸ ืื™ื™ืŸ ื ื•ืžืขืจ. ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึท ื–ื™ื™ืขืจ Java ืฆื•ื’ืึทื ื’, ืขืก ืื™ื– ืžืขืจ ืขื ืœืขืš ืคึฟืึทืจ SI, ืึธื‘ืขืจ ืขืก ืกืึทืœื•ื•ื– ื–ื™ื™ืŸ ืคึผืจืึธื‘ืœืขื.

ื“ืขืจื ืึธืš ืึทืœืฅ ืื™ื– ื ื™ืฉื˜ื™ืง - ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ื‘ืึทื•ื•ื•ืกื˜ ื ื•ืžืขืจ ืคื•ืŸ ื‘ื™ื˜ืขืก ืคื•ืŸ ื“ื™ ื›ืึธืœืขืœ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ื–ื™ื™ ืฆื• ืึท ื˜ืขืงืข, ื ืึธืš ื•ื•ืึธืก ืžื™ืจ ื•ื•ื™ื™ึทื–ืŸ ืึท ื”ืฆืœื—ื” ืึธื ื–ืึธื’.

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

ืื•ื™ื‘ ืึท ื‘ืึทืคึฟืขืœ ืื ื“ืขืจืข ื•ื•ื™ ื‘ืึทืงื•ืžืขืŸ ืึธื“ืขืจ ืฉื˜ืขืœืŸ ืื™ื– ืืจื™ื™ืŸ ืื™ืŸ ื“ืขื ืงืœื™ืขื ื˜ ืคึฟืขื ืฆื˜ืขืจ, ื“ื™ 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());
        }
    }

ื ืกืขืœืขืงื˜ืึธืจ ืื™ื– ืึท ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึธืก ื“ื™ื˜ืขืจืžืึทื ื– ื“ื™ ืึทืงืฉืึทื ื– ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืืจื™ื™ืŸ ืฉื˜ืจื™ืงืœ. ืึทืœืฅ ื“ืึธ ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ืฉื™ื™ืŸ ืื•ืŸ ื“ื™ ื˜ืจื™ืง ื’ืขื ื™ืฆื˜ ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ื‘ืขืกื˜ืขืจ ืžื™ื˜ ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืึทืจื•ื™ืกื’ืึทื ื’ ืึทืจื•ื™ืก ื“ื™ ืงืึธื“ ื‘ืœืึธืง, ืึธื‘ืขืจ ื“ื™ ื”ื•ื™ืคึผื˜ ืกื™ื‘ื” ืคึฟืึทืจ ื“ืขื ืื™ื– ื“ืขืจ ืึทื•ื•ืขืง ืื™ืŸ Java ืคื•ืŸ ืขื˜ืœืขื›ืข ื–ืื›ืŸ, ื•ื•ื™ ื“ืขืœืึทื’ื™ื™ืฅ ืื™ืŸ 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);
    }
}

ื˜ืคื˜ืคึผืกืขืจื•ื•ืขืจ

ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ื– ืึทื ื“ืขืจืฉ ืคื•ืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜, ื“ื•ืจืš ืื•ืŸ ื’ืจื•ื™ืก, ื‘ืœื•ื™ื– ืื™ืŸ ืึทื– ืงืึทืžืึทื ื“ื– ืงื•ืžืขืŸ ืฆื• ืื™ื ื ื™ืฉื˜ ืคึฟื•ืŸ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ, ืึธื‘ืขืจ ืคึฟื•ืŸ ื“ื™ ื›ืึธืœืขืœ. ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืžืขื˜ื”ืึธื“ืก ื–ืขื ืขืŸ ื‘ื›ืœืœ ื“ื™ ื–ืขืœื‘ืข, ืึทื–ื•ื™ ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ืฆื™ื˜ื™ืจืŸ ื–ื™ื™, ืื™ืš ื•ื•ืขืœ ื ืึธืจ ืึธื ืจื™ืจืŸ ื“ื™ ื“ื™ืคืขืจืึทื ืกื™ื–.

ืฆื• ืึธื ื”ื™ื™ื‘ืŸ, ื“ื™ ืœื•ื™ืคืŸ ืื•ืคึฟืŸ ืื™ื– ื’ืขื ื™ืฆื˜, ื•ื•ืึธืก ื ืขืžื˜ ืึท ืคึผืึธืจื˜ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืื•ืŸ ืคึผืจืึทืกืขืกืึทื– ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื›ืึธืœืขืœ ืื™ืŸ ืึทืŸ ืื™ื™ื‘ื™ืง ืฉืœื™ื™ืฃ.

    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รฉ, ืื•ืŸ ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคึฟื•ืŸ ืฉืจื™ื™ื‘ืŸ ืึท ืกืขืจื™ืข ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืขื’ืŸ ืงืžื“ ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืื™ื– ื’ืขื•ื•ืขืŸ ืื•ืžืžืขื’ืœืขืš ื ื™ืฉื˜ ืฆื• ืึธื ืจื™ืจืŸ.

ืœื™ื ืงืก:

ืžืงื•ืจ ืงืึธื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™
ื‘ืขืงื™ืฆืขืจ ื•ื•ืขื’ืŸ TFTP
ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš, ืึธื‘ืขืจ ืื™ืŸ ืจื•ืกื™ืฉ

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’