āĻāύāϏā§āϞ āĻāĻāĻāĻŋāϞāĻŋāĻāĻŋāĻā§āϞāĻŋāϰ āĻāĻžāϏā§āĻāĻŽ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ āύāĻŋāĻŦāύā§āϧā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏā§āĻŦā§āĨ¤ Windows TFTP (Trivial File Transfer Protocol) - āĻāĻāĻāĻŋ āϏāϰāϞ āĻĢāĻžāĻāϞ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻĒā§āϰā§āĻā§āĻāϞ - āĻāϰ āĻāĻĨāĻž āĻāϞā§āϞā§āĻ āύāĻž āĻāϰ⧠āĻĒāĻžāϰāĻž āϝāĻžāϝāĻŧ āύāĻžāĨ¤
āĻāϤāĻŦāĻžāϰā§āϰ āĻŽāϤ, āĻāϏā§āύ āϏāĻāĻā§āώāĻŋāĻĒā§āϤāĻāĻžāĻŦā§ āϤāϤā§āϤā§āĻŦā§āϰ āĻāĻĒāϰ āϝāĻžāĻ, āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻā§āĻĄā§āϰ āĻŽāϤ⧠āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰ⧠āĻāĻŽāύ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻā§āύ āĻāĻŦāĻ āĻāĻāĻŋ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰā§āύāĨ¤ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ - āĻāĻžāĻāĻž āĻ āϧā§āύā§
āĻāĻŽāĻŋ āϰā§āĻĢāĻžāϰā§āύā§āϏ āϤāĻĨā§āϝ āĻāĻĒāĻŋ-āĻĒā§āϏā§āĻ āĻāϰāĻŦ āύāĻž, āϝ⧠āϞāĻŋāĻā§āĻāĻā§āϞāĻŋ āĻāϤāĻŋāĻšā§āϝāĻāϤāĻāĻžāĻŦā§ āύāĻŋāĻŦāύā§āϧā§āϰ āĻļā§āώ⧠āĻĒāĻžāĻāϝāĻŧāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āĻāĻŽāĻŋ āĻļā§āϧ⧠āĻŦāϞāĻŦ āϝ⧠āĻāĻāĻŋāϰ āĻŽā§āϞ āĻ āĻāĻļā§, TFTP āĻšāϞ FTP āĻĒā§āϰā§āĻā§āĻāϞā§āϰ āĻāĻāĻāĻŋ āϏāϰāϞā§āĻā§āϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ, āϝāĻžāϤ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āϏā§āĻāĻŋāĻ āϏāϰāĻžāύ⧠āĻšāϝāĻŧā§āĻā§, āĻāĻŦāĻ āĻāϏāϞ⧠āĻāĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āĻā§āϰāĻšāĻŖ āĻāĻŦāĻ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāύā§āĻĄ āĻāĻžāĻĄāĻŧāĻž āĻāĻŋāĻā§āĻ āύā§āĻāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻā§āĻĄ āϞā§āĻāĻžāϰ āĻŦāϰā§āϤāĻŽāĻžāύ āύā§āϤāĻŋāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύāĻā§ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻŽāĻžāϰā§āĻāĻŋāϤ āĻāĻŦāĻ āĻ āĻāĻŋāϝā§āĻāĻŋāϤ āĻāϰāĻžāϰ āĻāύā§āϝ, āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏāĻāĻŋ āĻāĻŋāĻā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ - āĻāĻāĻŋ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āύā§āϤāĻŋāĻā§āϞāĻŋāĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠āύāĻž, āϤāĻŦā§ āĻāύā§āĻāĻžāϰāĻĢā§āϏ, IMHO, āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āϝā§āĻā§āϤāĻŋāĻ āĻšāϝāĻŧā§ āĻāĻ ā§ āĻāĻŦāĻ FTP āĻāĻŦāĻ TFTP-āĻāϰ āĻāϤāĻŋāĻŦāĻžāĻāĻ āĻĻāĻŋāĻāĻā§āϞāĻŋāĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰā§āĨ¤
āĻŦāĻŋāĻļā§āώ āĻāϰā§, āϝāĻāύ āĻāĻžāϞ⧠āĻšāϝāĻŧ, āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āϝ⧠āĻĒā§āϰā§āĻā§ āĻāĻžāϏā§āĻāĻŽ TFTP āĻā§āϞāĻž āĻĨāĻžāĻā§ āϤāĻžāϰ āĻ āύā§āϰā§āϧ āĻāϰ⧠(āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻĒā§āϰā§āĻā§āĻāϞā§āϰ āϏāĻžāĻĨā§ āĻ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāϤāĻžāϰ āĻāĻžāϰāĻŖā§, āĻāĻŽāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āĻā§āĻĄāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž āĻāĻĒāϝā§āĻā§āϤ āĻŦāϞ⧠āĻŽāύ⧠āĻāϰā§āĻāĻŋ), āϝāĻžāϰ āĻĒāϰ⧠āĻāĻāĻāĻŋ āϏāĻāϝā§āĻ āĻāĻā§, āϝāĻžāϰ āĻĢāϞāϏā§āĻŦāϰā§āĻĒ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻŽāĻžāύā§āĻĄāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰ⧠- āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āĻā§āϰāĻšāĻŖ āĻŦāĻž āĻĒā§āϰā§āϰāĻŖā§āϰ āĻāύā§āϝ - āĻĒā§āϤ⧠āĻŦāĻž āϰāĻžāĻā§āύāĨ¤ āϝā§āĻā§āϤāĻŋ āϏāĻšāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻŽāϏā§āϤ āĻĢāĻžāĻāϞ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻŽā§āĻĄā§ āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧāĨ¤
āĻĒā§āϰā§āĻā§āĻāϞ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāϤā§, āĻāĻŽāĻŋ āĻāϤāĻŋāĻšā§āϝāĻāϤāĻāĻžāĻŦā§ 4 āĻāĻŋ āĻā§āϞāĻžāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻāĻŋ:
- TFTPC āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ
- TFTPS āϏāĻžāϰā§āĻāĻžāϰ
- TFTPC āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āϏā§āĻāĻžāϰ
- 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 āĻŦāĻžāĻāĻ āĻā§āϰāĻšāĻŖ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻž āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āĻāĻāĻāĻŋ āϏāĻāĻā§āϝāĻžāϝāĻŧ āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦ āĻāĻžāĻāĻž āĻĒāĻĻā§āϧāϤāĻŋ āύāϝāĻŧ, āĻāĻāĻŋ āĻŦāϰāĻ āĻāϏāĻāĻ āĻāϰ āĻāύā§āϝ āĻ āύā§āϰā§āĻĒ, āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āϤāĻžāϰ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āĨ¤
āϤāĻžāϰāĻĒāϰ⧠āϏāĻŦāĻāĻŋāĻā§āĻ āϤā§āĻā§āĻ - āĻāĻŽāϰāĻž āϏāĻā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻāĻŋāϤ āϏāĻāĻā§āϝāĻ āĻŦāĻžāĻāĻ āĻĒāĻžāĻ āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ⧠āϞāĻŋāĻāĻŋ, āϝāĻžāϰ āĻĒāϰ⧠āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āϏāĻžāĻĢāϞā§āϝā§āϰ āĻŦāĻžāϰā§āϤāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŋāĨ¤
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
