рд╡рд┐рдиреНрдбреЛрдЬ рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВрдХреЛ рдЕрдиреБрдХреВрд▓рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рд╕рдорд░реНрдкрд┐рдд рд▓реЗрдЦрд╣рд░реВрдХреЛ рдЬрд╛рд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рд╛рдЦреНрджреИ, рд╣рд╛рдореА TFTP (рдЯреНрд░рд┐рднрд┐рдпрд▓ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХрд▓) - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХрд▓рдорд╛ рдЫреБрдиреБрд╣реЛрд╕реН рддрд░ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред
рдкрдЫрд┐рд▓реНрд▓реЛ рдкрдЯрдХрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдЫреЛрдЯрдХрд░реАрдорд╛ рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдЬрд╛рдФрдВ, рдЖрд╡рд╢реНрдпрдХрд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдХреЛрдб рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рд░ рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдердк рд╡рд┐рд╡рд░рдг - рдХрдЯ рдЕрдиреНрддрд░реНрдЧрдд
рдо рд╕рдиреНрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЯрд╛рдБрд╕реНрдиреЗ рдЫреИрди, рдЬреБрди рд▓рд┐рдЩреНрдХрд╣рд░реВ рдкрд░рдореНрдкрд░рд╛рдЧрдд рд░реВрдкрдорд╛ рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдо рдХреЗрд╡рд▓ рднрдиреНрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдпрд╕рдХреЛ рдореВрд▓рдорд╛, TFTP FTP рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдПрдХ рд╕рд░рд▓ рднрд┐рдиреНрдирддрд╛ рд╣реЛ, рдЬрд╕рдорд╛ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рд╕реЗрдЯрд┐рдЩред рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ, рд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдлрд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрджреЗрд╢рд╣рд░реВ рдмрд╛рд╣реЗрдХ рдпрд╣рд╛рдБ рдХреЗрд╣реА рдЫреИрдиред рдЬреЗ рд╣реЛрд╕реН, рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдЕрд▓рд┐ рдмрдвреА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд░ рд▓реЗрдЦрди рдХреЛрдбрдХреЛ рд╣рд╛рд▓рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВрдорд╛ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдереЛрд░реИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫ - рдпрд╕рд▓реЗ рд╕рдЮреНрдЪрд╛рд▓рдирдХрд╛ рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИрди, рддрд░ рдЗрдиреНрдЯрд░рдлреЗрд╕, IMHO, рдЕрд▓рд┐ рдмрдвреА рддрд╛рд░реНрдХрд┐рдХ рд╣реБрдиреНрдЫ рд░ FTP рд░ TFTP рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрдЫред
рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдЬрдм рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╕рд░реНрднрд░рдХреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рд░ рдкреЛрд░реНрдЯ рдЬрд╕рдорд╛ рдЕрдиреБрдХреВрд▓рди 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());
}
}
рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рд╕рдЮреНрдЭреНрдпрд╛рд▓рдорд╛ 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);
}
}
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