рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд▓реЗрдЦреЛрдВ рдХреА рдЪрд▓ рд░рд╣реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдЯреАрдПрдлрдЯреАрдкреА (рдЯреНрд░рд┐рд╡рд┐рдпрд▓ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) - рдПрдХ рд╕рд░рд▓ рдлрд╝рд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ - рдХреЛ рдЫреВрдиреЗ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рд╕рдХрддреЗред
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ, рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг - рдХрдЯ рдХреЗ рдЕрдВрддрд░реНрдЧрдд
рдореИрдВ рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдВрдХ рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдЯреАрдПрдлрдЯреАрдкреА рдПрдлрд╝рдЯреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗрдЯрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рдиреЗ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЗрд╕рд╕реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕, IMHO, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдлрд╝рдЯреАрдкреА рдФрд░ рдЯреАрдПрдлрдЯреАрдкреА рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдЙрд╕ рдкреЛрд░реНрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХрд╕реНрдЯрдо рдЯреАрдПрдлрдЯреАрдкреА рдЦреБрд▓рд╛ рд╣реИ (рдорд╛рдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрддрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреЛрд░реНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЫреЛрдбрд╝рдирд╛ рдЙрдЪрд┐рдд рд╕рдордЭрд╛), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдП рдХрдиреЗрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ - рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрд╛ рдбрд╛рд▓реЗрдВред рддрд░реНрдХ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрд╛рдЗрдирд░реА рдореЛрдб рдореЗрдВ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ 4 рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
- рдЯреАрдПрдлрдЯреАрдкреАрдХреНрд▓рд╛рдЗрдВрдЯ
- TFTPServer
- рдЯреАрдПрдлрдЯреАрдкреАрдХреНрд▓рд╛рдЗрдВрдЯрдЯреЗрд╕реНрдЯрд░
- TFTPServerрдЯреЗрд╕реНрдЯрд░
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдПрдВ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИрдВ, рдореИрдВ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрдЧрд╛; рдЗрд╕рдХрд╛ рд▓рд┐рдВрдХ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рдореИрдВ рдореБрдЦреНрдп рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ред
рдЯреАрдПрдлрдЯреАрдкреАрдХреНрд▓рд╛рдЗрдВрдЯ
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐рд╕реА рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдЙрд╕рдХреЗ рдЖрдИрдкреА рдФрд░ рдкреЛрд░реНрдЯ рдирдВрдмрд░ рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛, рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреАрдмреЛрд░реНрдб) рд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдкрдврд╝рдирд╛, рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛, рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░, рдпрд╣ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рднреЗрдЬрдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдЙрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдХрдорд╛рдВрдб рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рд╡рд░реНрдгрди рд▓реЗрдЦ рдХреЗ рдмрд╛рд╣рд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреВрд░реНрдг рдкрд╛рда рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдирдХреА рддреБрдЪреНрдЫрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд░рддрд╛ рддрд╛рдХрд┐ рд▓реЗрдЦ рдкрд░ рдЕрдзрд┐рдХ рдмреЛрдЭ рди рдкрдбрд╝реЗред
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());
}
}
рдЪрдпрдирдХрд░реНрддрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рджрд░реНрдЬ рдХреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдЯреНрд░рд┐рдХ рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд╣рд░ рдЬрдмрд░рди рдирд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬреИрд╕реЗ рд╕реА # рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐, рд╕реА ++ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рднрдпрд╛рдирдХ рдФрд░ рднрдпрд╛рдирдХ рдЧреЛрдЯреЛ, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рддреЛ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдБред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ...
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();
}
}
рдкреБрдЯ рд╡рд┐рдзрд┐, рдЬреЛ 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());
}
}
рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ:
рд╣рдордиреЗ рдЕрднреА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЕрдореЗрд░рд┐рдХрд╛ рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХреА рдФрд░ рдмрд╣реБрдд рд╕реА рдирдИ рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреАрдВ, рд▓реЗрдХрд┐рди рд╣реИрдмреЗ рдкрд░ рдХреЛрдИ рд╕рдорд╛рди рд▓реЗрдЦ рдирд╣реАрдВ рдереЗ, рдФрд░ рд╕реАрдПрдордбреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдЫреВрдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред
рдХрдбрд╝рд┐рдпрд╛рдБ:
рд╕реНрд░реЛрдд: www.habr.com