рд╡рд┐рдВрдбреЛрдЬ рдХрдиреНрд╕реЛрд▓ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рд╕рд╛рдиреБрдХреВрд▓ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рд╕рдорд░реНрдкрд┐рдд рд▓реЗрдЦрд╛рдВрдЪреА рдЪрд╛рд▓реВ рдорд╛рд▓рд┐рдХрд╛ рд╕реБрд░реВ рдареЗрд╡реВрди, рдЖрдореНрд╣реА TFTP (рдЯреНрд░рд┐рд╡реНрд╣рд┐рдпрд▓ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рд╡рд░ рд╕реНрдкрд░реНрд╢ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА - рдПрдХ рд╕рд╛рдзрд╛ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.
рдорд╛рдЧрдЪреНрдпрд╛ рд╡реЗрд│реЗрдкреНрд░рдорд╛рдгреЗ, рдереНрдпреЛрд░реАрд╡рд░ рдереЛрдбрдХреНтАНрдпрд╛рдд рдЬрд╛рдК, рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдорд╛рдгреЗрдЪ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдХрд░рдгрд╛рд░рд╛ рдХреЛрдб рдкрд╛рд╣реВ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВ. рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ - рдХрдЯ рдЕрдВрддрд░реНрдЧрдд
рдореА рд╕рдВрджрд░реНрдн рдорд╛рд╣рд┐рддреА рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдЬреНрдпрд╛рдЪреЗ рджреБрд╡реЗ рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХрдкрдгреЗ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЖрдврд│реВ рд╢рдХрддрд╛рдд, рдореА рдлрдХреНрдд рдПрд╡рдвреЗрдЪ рд╕рд╛рдВрдЧреЗрди рдХреА, TFTP рд╣реЗ FTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдкрд╛рдВрддрд░ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЖрдгрд┐ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдлрд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрджреЗрд╢рд╛рдВрд╢рд┐рд╡рд╛рдп рдпреЗрдереЗ рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА. рддрдерд╛рдкрд┐, рдЖрдордЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдереЛрдбреА рдЕрдзрд┐рдХ рдореЛрд╣рдХ рдЖрдгрд┐ рд▓реЗрдЦрди рдХреЛрдбрдЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рддрддреНрддреНрд╡рд╛рдВрд╢реА рдЬреБрд│рд╡реВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдХрд┐рдВрдЪрд┐рдд рдмрджрд▓рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ - рдпрд╛рдореБрд│реЗ рдСрдкрд░реЗрд╢рдирдЪреА рддрддреНрддреНрд╡реЗ рдмрджрд▓рдд рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рдЗрдВрдЯрд░рдлреЗрд╕, IMHO, рдереЛрдбрд╛ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рдмрдирддреЛ рдЖрдгрд┐ FTP рдЖрдгрд┐ TFTP рдЪреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреИрд▓реВ рдПрдХрддреНрд░ рдХрд░рддреЗ.
рд╡рд┐рд╢реЗрд╖рддрдГ, рд▓реЙрдиреНрдЪ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдХреНрд▓рд╛рдпрдВрдЯ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ IP рдкрддреНрддреНрдпрд╛рдЪреА рдЖрдгрд┐ рд╕рд╛рдиреБрдХреВрд▓ TFTP рдЙрдШрдбрд▓реЗрд▓реНрдпрд╛ рдкреЛрд░реНрдЯрдЪреА рд╡рд┐рдирдВрддреА рдХрд░рддреЛ (рдорд╛рдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╢реА рд╡рд┐рд╕рдВрдЧрддрддреЗрдореБрд│реЗ, рдореА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕ рдкреЛрд░реНрдЯ рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд╕реЛрдбрдгреЗ рдпреЛрдЧреНрдп рдорд╛рдирд▓реЗ), рддреНрдпрд╛рдирдВрддрд░ рдП. рдХрдиреЗрдХреНрд╢рди рдЙрджреНрднрд╡рддреЗ, рдкрд░рд┐рдгрд╛рдореА рдХреНрд▓рд╛рдпрдВрдЯ рдХрдорд╛рдВрдбрдкреИрдХреА рдПрдХ рдкрд╛рдард╡реВ рд╢рдХрддреЛ - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдлрд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдкрд╛рдард╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА - рдорд┐рд│рд╡рд╛ рдХрд┐рдВрд╡рд╛ рдареЗрд╡рд╛. рддрд░реНрдХ рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ рдлрд╛рдЗрд▓реНрд╕ рдмрд╛рдпрдирд░реА рдореЛрдбрдордзреНрдпреЗ рдкрд╛рдард╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд.
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХрдкрдгреЗ 4 рд╡рд░реНрдЧ рд╡рд╛рдкрд░рд▓реЗ:
- TFTPCрдХреНрд▓рд╛рдпрдВрдЯ
- TFTPS рд╕рд░реНрд╡реНрд╣рд░
- TFTPClientTester
- TFTPSрд╕рд░реНрд╡реНрд╣рд░ рдЯреЗрд╕реНрдЯрд░
рдЪрд╛рдЪрдгреА рд╡рд░реНрдЧ рдХреЗрд╡рд│ рдореБрдЦреНрдп рдбреАрдмрдЧрд┐рдВрдЧрд╕рд╛рдареА рдЕрд╕реНрддрд┐рддреНрддреНрд╡рд╛рдд рдЖрд╣реЗрдд рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ, рдореА рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдХреЛрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЕрд╕реЗрд▓; рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рддреНрдпрд╛рдЪреА рдПрдХ рд▓рд┐рдВрдХ рдЖрдврд│реВ рд╢рдХрддреЗ. рдЖрддрд╛ рдореА рдореБрдЦреНрдп рд╡рд░реНрдЧ рдмрдШреЗрди.
TFTPCрдХреНрд▓рд╛рдпрдВрдЯ
рдпрд╛ рд╡рд░реНрдЧрд╛рдЪреЗ рдХрд╛рд░реНрдп рдореНрд╣рдгрдЬреЗ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдпрдкреА рдЖрдгрд┐ рдкреЛрд░реНрдЯ рдирдВрдмрд░рджреНрд╡рд╛рд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреЗ, рдЗрдирдкреБрдЯ рдкреНрд░рд╡рд╛рд╣ (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдХреАрдмреЛрд░реНрдб) рд╡рд░реВрди рдХрдорд╛рдВрдб рд╡рд╛рдЪрдгреЗ, рддреНрдпрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреЗ, рддреЗ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдЖрдкрдг рдХреА рдирд╛рд╣реА рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдлрд╛рдЗрд▓ рдкрд╛рдард╡рд╛рдпрдЪреА рдХрд┐рдВрд╡рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛рдпрдЪреА, рддреА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рдпрдЪреА рдХрд┐рдВрд╡рд╛ рдорд┐рд│рд╡рд╛рдпрдЪреА.
рд╕рд░реНрд╡реНрд╣рд░рд╢реА рдХрдиреЗрдХреНрдЯ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЗрдирдкреБрдЯ рдкреНрд░рд╡рд╛рд╣рд╛рддреАрд▓ рдЖрджреЗрд╢рд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреЛрдб рдпрд╛рд╕рд╛рд░рдЦрд╛ рджрд┐рд╕рддреЛ. рдпреЗрдереЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдЕрдиреЗрдХ рдЬрд╛рдЧрддрд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рд╡рд░реНрдгрди рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреНрдпрд╛ рдкреВрд░реНрдг рдордЬрдХреБрд░рд╛рдд рдХреЗрд▓реЗ рдЖрд╣реЗ. рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХреНрд╖реБрд▓реНрд▓рдХрдкрдгрд╛рдореБрд│реЗ, рд▓реЗрдЦрд╛рд╡рд░ рдЬрд╛рд╕реНрдд рднрд╛рд░ рдкрдбреВ рдирдпреЗ рдореНрд╣рдгреВрди рдореА рддреНрдпрд╛рдВрдЪрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдд рдирд╛рд╣реА.
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 рдмрд╛рдЗрдЯреНрд╕ рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рдЬрд╛рддрд╛рдд, рдЬреЗ рдирдВрддрд░ рдПрдХрд╛ рд╕рдВрдЦреНрдпреЗрдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рд╣рд╛ рдлрд╛рд░рд╕рд╛ рдЬрд╛рд╡рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдирд╛рд╣реА, рддреЛ 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);
}
}
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());
}
}
рд╕рд╛рд░рд╛рдВрд╢ рдХрд░рдгреЗ:
рдЖрдореНрд╣реА рдлрдХреНрдд рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╡рд░ рдЖрдордЪреА рд╕реНрд╡рддрдГрдЪреА рднрд┐рдиреНрдирддрд╛ рд▓рд┐рд╣рд┐рд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рд╣реЗ рд╢реЛрдзреВрди рдХрд╛рдврд▓реЗ рдЖрд╣реЗ. рддрддреНрд╡рддрдГ, рдореА рдпреЗрдереЗ рдЕрдореЗрд░рд┐рдХрд╛ рд╢реЛрдзрд▓реА рдирд╛рд╣реА рдЖрдгрд┐ рдЦреВрдк рдирд╡реАрди рдЧреЛрд╖реНрдЯреА рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ Habr├й рд╡рд░ рдХреЛрдгрддреЗрд╣реА рд╕рдорд╛рди рд▓реЗрдЦ рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ cmd рдЙрдкрдпреБрдХреНрддрддреЗрдмрджреНрджрд▓ рд▓реЗрдЦрд╛рдВрдЪреА рдорд╛рд▓рд┐рдХрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рддреНрдпрд╛рд╡рд░ рд╕реНрдкрд░реНрд╢ рди рдХрд░рдгреЗ рдЕрд╢рдХреНрдп рд╣реЛрддреЗ.
рджреБрд╡реЗ:
рд╕реНрддреНрд░реЛрдд: www.habr.com