рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдирд╛ рд╡рд┐рдВрдбреЛрдЬ, рднрд╛рдЧ 02

рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛, TFTP (рдЯреНрд░рд╛рдЗрдмрд┐рдпрд▓ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рдПрдХ рд╕рд░рд▓ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИред

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдПрдХ рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ - рдХрдЯ рдХреЗ рдиреАрдЪреЗ

рдореИрдВрдиреЗ рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдВрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ TFTP рдПрдлрд╝рдЯреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдкрд╛рдВрддрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗрдЯрд┐рдВрдЧ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рдиреЗ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЖрдИрдПрдордПрдЪрдУ, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдлрд╝рдЯреАрдкреА рдФрд░ рдЯреАрдПрдлрдЯреАрдкреА рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдЙрд╕ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХрд╕реНрдЯрдо TFTP рдЦреБрд▓рд╛ рд╣реИ (рдорд╛рдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреЛрд░реНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЙрдЪрд┐рдд рд╕рдордЭрд╛), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХрдиреЗрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрд╛ рдбрд╛рд▓ рджреЗрдВред рддрд░реНрдХ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдмрд╛рдЗрдирд░реА рдореЛрдб рдореЗрдВ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ 4 рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:

  • TFTPClient
  • TFTPServer
  • TFTPClientTester
  • TFTPServerTester

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдПрдВ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИрдВ, рдореИрдВ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрдЧрд╛, рдЗрд╕рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдм рдореИрдВ рдореБрдЦреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕рдордЭреВрдВрдЧрд╛ред

TFTPClient


рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рдЖрдИрдкреА рдФрд░ рдкреЛрд░реНрдЯ рдирдВрдмрд░ рджреНрд╡рд╛рд░рд╛ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ, рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреАрдмреЛрд░реНрдб) рд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдкрдврд╝реЗрдВ, рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ, рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдХрдорд╛рдВрдб рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреВрд░реНрдг рдкрд╛рда рдореЗрдВ рд▓реЗрдЦ рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд▓реЗрдЦ рдХреЗ рдмрд╛рд╣рд░ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЙрдирдХреА рддреБрдЪреНрдЫрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рд▓реЗрдЦ рдХреЛ рдЕрдзрд┐рднрд╛рд░ рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрд▓реА рдирд╣реАрдВ рджреЗрддрд╛ред

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("\nDone\n"); } 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("\nDONE\n"); } catch (Exception e){ System.out.println(e.getMessage()); } } 

рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЧреЗрдЯ рдпрд╛ рдкреБрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХреА рдЧрдИ рдереА, рддреЛ рдЗрдирдкреБрдЯ рдХреА рдЧрд▓рддрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рд╢реЛ-рдореЗрдпрд░рдореИрд╕реЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддреБрдЪреНрдЫрддрд╛ рдХреЗ рдХрд╛рд░рдг - рдореИрдВ рдмреЛрд▓реА рдирд╣реАрдВред рдХреБрдЫ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреИрдирд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рджреЛ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдПрдХ рд▓рд╛рдЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдХрдорд╛рдВрдб, рд╕реНрд░реЛрдд рдкрддреЗ рдФрд░ рдЧрдВрддрд╡реНрдп рдкрддреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

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

рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЗрддрдиреА рдЕрдЪреНрдЫреА-рдЕрдЪреНрдЫреА рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬреИрд╕реЗ рд╕реА # рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ, рд╕реА ++ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдбрд░рд╛рд╡рдирд╛ рдФрд░ рднрдпрд╛рдирдХ рдЧреЛрдЯреЛ, рдЬреЛ рдЖрдк рдЗрд╕реЗ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рддреЛ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдбрд┐рдХреНрд╢рдирд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣рд╛рдБ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ ...

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

TFTPServer


рд╕рд░реНрд╡рд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕реА рдореЗрдВ рдмрдбрд╝реА рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реЙрдХреЗрдЯ рд╕реЗ рдЖрддреА рд╣реИред рдХреБрдЫ рд╡рд┐рдзрд┐рдпрд╛рдБ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рджрд┐рдпрд╛; рдореИрдВ рдХреЗрд╡рд▓ рдорддрднреЗрджреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдБрдЧрд╛ред

рдпрд╣рд╛рдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдирдиреНрдд рдЪрдХреНрд░ рдореЗрдВ рд╕реЙрдХреЗрдЯ рд╕реЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдкреБрдЯ рд╡рд┐рдзрд┐, рдЬреЛ рд░рд╛рдЗрдЯрдЯреЙрдпрд▓реЗрдлреНрд░реЙрдо рд╕реЙрдХреЗрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдзрд╛рд░рд╛ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд╕реЙрдХреЗрдЯ рд╕реЗ рд╕рднреА рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдЦрддрд╛ рд╣реИ, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

  private void put(String source, String dest){ writeToFileFromSocket(); System.out.print("\nDone\n"); }; 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()); } } 

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

рд╣рдордиреЗ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдЕрдкрдиреА рднрд┐рдиреНрдирддрд╛ рд▓рд┐рдЦреА рд╣реИ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдореЗрд░рд┐рдХрд╛ рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХреА рдереА рдФрд░ рдмрд╣реБрдд рдирдпрд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди - рд╣реЗрдмреЗ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдЦ рдирд╣реАрдВ рдереЗ, рдФрд░ рд╕реАрдПрдордбреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрд╕ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред

рд╕рдВрджрд░реНрдн:

рд╕реНрд░реЛрдд рдХреЛрдб рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА
TFTP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ
рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рд░реВрд╕реА рдореЗрдВ

Source: https://habr.com/ru/post/hi461083/


All Articles