เบเบฒเบเบชเบทเบเบเปเปเบเบธเบเบเบปเบเปเบฅเบทเปเบญเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเบเบตเปเบญเบธเบเบดเบเปเบซเปเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบเบเบญเบ Windows console utilities, เบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบเปเบงเบเปเบเปเปเบเปเปเบเบฐเบเบตเป TFTP (Trivial File Transfer Protocol) - เปเบเปเบเบเบญเบเบเบฒเบเปเบญเบเปเบเบฅเปเบเปเบฒเบเบเบฒเบ.
เปเบเบเบฒเบเบฐเปเบเบฑเบเบเบฑเปเบเบชเบธเบเบเปเบฒเบ, เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเบฐเบซเบผเบธเบเปเบเบเบซเบเปเปเบเปเบฝเบงเบเบฑเบเบเบดเบเบชเบฐเบเบต, เปเบเบดเปเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเบญเบเบเบฒเบ, เปเบฅเบฐเบงเบดเปเบเบฒเบฐเบกเบฑเบ. เบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก - เบเบฒเบเปเบเปเบเบฒเบเบเบฑเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบเบฑเบเบฅเบญเบเบเปเปเบกเบนเบเบญเปเบฒเบเบญเบตเบ, เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเบฒเบกเบเบฐเปเบเบเบตเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบปเบเบเบงเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเบฐเปเบงเบปเปเบฒเบงเปเบฒเบขเบนเปเปเบเบซเบผเบฑเบเบเบญเบเบกเบฑเบ, TFTP เปเบกเปเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบญเบเปเบเปเบเบเบญเบ FTP, เปเบเบดเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบกเบต. เปเบเปเบเบทเบเปเบเบเบเปเบฒเบ, เปเบฅเบฐเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเปเปเบกเบตเบซเบเบฑเบเบขเบนเปเบเบตเปเบเบตเปเบเบปเบเปเบงเบฑเปเบเบเปเบฒเบชเบฑเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเบฑเบเปเบฅเบฐเปเบญเบเปเบเบฅเป . เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบชเบฐเบซเบเปเบฒเบเบฒเบกเปเบฅเบฑเบเบเปเบญเบเปเบฅเบฐเบเบฑเบเบเบปเบงเปเบเบปเปเบฒเบเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบฝเบเบฅเบฐเบซเบฑเบเปเบเบเบฐเบเบธเบเบฑเบ, syntax เปเบเปเบเบทเบเบเปเบฝเบเปเบเบเปเบฅเบฑเบเบเปเบญเบ - เบเบตเปเบเปเปเปเบเปเบเปเบฝเบเบซเบผเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ, เปเบเปเบเบฒเบเปเบเปเบเบญเบ, IMHO, เบเบฒเบเปเบเบฑเบเปเบซเบเบเบปเบเปเบฅเบฑเบเบเปเบญเบเปเบฅเบฐ. เบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเปเบฒเบเบเบงเบเบเบญเบ FTP เปเบฅเบฐ TFTP.
เปเบเบเบชเบฐเปเบเบฒเบฐ, เปเบกเบทเปเบญเปเบเบตเบเบเบปเบง, เบฅเบนเบเบเปเบฒเบฎเปเบญเบเบเปเบเบตเปเบขเบนเป IP เบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐเบเบญเบเบเบตเป TFTP เบเปเบฒเบเบปเบเปเบญเบเปเบเบตเบ (เปเบเบทเปเบญเบเบเบฒเบเบเบงเบฒเบกเบเปเปเปเบเบปเปเบฒเบเบฑเบเบเบฑเบเปเบเปเบเบเบญเบเบกเบฒเบเบเบฐเบเบฒเบ, เบเปเบญเบเบเบทเบงเปเบฒเบกเบฑเบเปเบซเบกเบฒเบฐเบชเบปเบกเบเบตเปเบเบฐเบเปเบญเบเปเบซเปเบเบนเปเปเบเปเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเบเบญเบ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบตเบเบเบทเปเบ, เปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบเบตเปเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเบชเบปเปเบเบเปเบฒเบชเบฑเปเบเบซเบเบถเปเบ - เปเบเปเบฎเบฑเบเบซเบผเบทเบงเบฒเบ, เปเบเบทเปเบญเบฎเบฑเบเบซเบผเบทเบชเบปเปเบเปเบเบฅเปเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบทเบเบชเบปเปเบเปเบเปเบซเบกเบเบเบฒเบเบชเบญเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบเบเบญเบเปเบซเบเบเบปเบ.
เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบดเบเบตเบเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเป 4 เบซเปเบญเบเบฎเบฝเบเบเบฒเบกเบเบฐเปเบเบเบต:
- TFTClient
- TFTPSserver
- TTPClientTester
- TFTPServerTester
เปเบเบทเปเบญเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบซเปเบญเบเบฎเบฝเบเบเบฒเบเบเบปเบเบชเบญเบเบกเบตเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบ debugging เบเบปเปเบเบเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบงเบดเปเบเบฒเบฐเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ, เปเบเปเบฅเบฐเบซเบฑเบเบเบฐเบขเบนเปเปเบ repository เปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบปเบเบเบงเบฒเบก. เบเบญเบเบเบตเปเบเปเบญเบเบเบฐเปเบเบดเปเบเบเบฑเปเบเบฎเบฝเบเบซเบผเบฑเบ.
TFTClient
เบงเบฝเบเบเบฒเบเบเบญเบเบซเปเบญเบเบฎเบฝเบเบเบตเปเปเบกเปเบเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเปเบเบเปเบเป ip เปเบฅเบฐเบซเบกเบฒเบเปเบฅเบเบเบญเบ, เบญเปเบฒเบเบเปเบฒเบชเบฑเปเบเบเบฒเบเบเบฐเปเบชเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ (เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เปเบเปเบเบเบดเบก), เปเบเบเบกเบฑเบ, เปเบญเบเบกเบฑเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เปเบฅเบฐ, เบเบถเปเบเบเบฑเบเบงเปเบฒเบเปเบฒเบ. เบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเบชเบปเปเบโเบซเบผเบทโเปเบเปโเบฎเบฑเบโเปเบเบฅโเปโ, เปเบญเบโเบซเบผเบทโเปเบเปโเบฎเบฑเบโ.
เบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบตเบเบเบปเบงเบฅเบนเบเบเปเบฒเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐเบฅเปเบเปเบฒเบเปเบฒเบชเบฑเปเบเบเบฒเบเบเบฐเปเบชเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป. เบเปเบฒเบเบงเบเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบขเบนเปเบเบตเปเบเบตเปเปเบกเปเบเปเบเปเบญเบฐเบเบดเบเบฒเบเบขเบนเปเบเบญเบเบเบปเบเบเบงเบฒเบก, เปเบเบเปเปเบเบงเบฒเบกเปเบเบฑเบกเบเบญเบเปเบเบผเปเบเบผเบก. เปเบเบทเปเบญเบเบเบฒเบเบเบงเบฒเบกเบซเบเปเปเบเปเปเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ, เบเปเบญเบเบเปเปเบญเปเบฒเบเปเบเบดเบเบเบงเบเบกเบฑเบเปเบเบทเปเบญเบเปเปเปเบซเปเบเบปเบเบเบงเบฒเบกเบซเบผเบฒเบเปเบเบตเบเปเบ.
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());
}
}
เปเบซเปเปเบเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเปเบเบฅเบฐเบซเบฑเบเบเบตเป:
เบเบตเปเบเบตเปเปเบเบฅเปเบเบทเบเบชเบปเปเบ - เปเบเบเปเบเปเปเบเบทเปเบญเบเบชเบฐเปเบเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบทเปเบญเปเบเบเบญเบเปเบเบฅเปเปเบเบฑเบ array เบเบญเบ bytes, เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฝเบเบซเบเบถเปเบเปเบเบเบซเบเบถเปเบเปเบชเปเปเบเบปเปเบฒเบฎเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบดเบเบกเบฑเบเปเบฅเบฐเปเบเบตเบเบกเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ (เบเปเปเปเบกเปเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบฐเปเบเปเบเบเบตเปเบชเบธเบ, เปเบเป. เบกเบฑเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเปเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฐเปเบเบเบเปเปเบเบงเบฒเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบญเบเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ.
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());
}
}
เบเบดเปเบเบชเปเบงเบเบฅเบฐเบซเบฑเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเบฒเบเบเบถเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบตเบเปเบงเบต. เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบฅเบฑเบเปเบเปเบญเบเป, เบเบฝเบเปเบเปเบฅเบฐเบซเบฑเบเบเปเบฒเบญเบดเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบ. เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบขเปเบฒเบเปเบเปเบเบดเบเบงเปเบฒเบเปเบฒเบเบงเบ bytes เบเปเบฒเปเบเบฑเบเบเปเบญเบเบญเปเบฒเบเบเบฒเบเปเบเบปเปเบฒเบชเบฝเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฎเบนเปเบงเปเบฒเปเบเบฅเปเบเบตเปเบเบทเบเปเบญเบเบกเบตเบเปเปเบฒเบซเบเบฑเบเปเบเบปเปเบฒเปเบ. เบเบฐเบซเบเบฒเบเปเบเบฅเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบกเปเบเปเบเบฑเบเบเบปเบงเปเบเบเปเบเบฑเบเบเปเบฒเบเบงเบเบเบฒเบง, เบเบฑเปเบเบเบฑเปเบ 4 bytes เปเบเปเบเบทเบเบเบญเบกเบฎเบฑเบเบขเบนเปเบเบตเปเบเบตเป, เปเบเบดเปเบเบเปเปเบกเบฒเปเบเปเบเบทเบเบเปเบฝเบเปเบเบฑเบเบเปเบฒเบเบงเบเบซเบเบถเปเบ. เบเบตเปเบเปเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบ Java เบซเบผเบฒเบ, เบกเบฑเบเบเปเบฒเบเบเบทเบเบฑเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบ SI, เปเบเปเบกเบฑเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบญเบเบกเบฑเบ.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบฅเบฑเบเปเบเปเบญเบเป - เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเบฒเบเบงเบ bytes เบเบตเปเบฎเบนเปเบเบฑเบเบเบฒเบเปเบเบปเปเบฒเบฎเบฑเบเปเบฅเบฐเบเบฝเบเบเบงเบเบกเบฑเบเปเบชเปเปเบเบฅเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฐเปเบเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ.
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());
}
}
เปเบเปเบฅเบทเบญเบเปเบเบฑเบเบเบฑเบเบเบฑเบเบเบตเปเบเบณเบเบปเบเบเบฒเบเบเบฐเบเบณเบเบญเบเปเบเบฃเปเบเบก เปเบเบเบเบถเปเบเบเบฑเบเบชเบฐเบเบฃเบดเบเบเบตเปเบเปเบญเบเปเบเบปเปเบฒ. เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเบนเปเบเบตเปเบเบตเปเบเปเปเบเบฒเบกเบซเบผเบฒเบเปเบฅเบฐ trick เบเบตเปเปเบเปเบเปเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบกเบตเบเบฒเบเบเบฑเบเบเบฑเบเปเบซเปเบญเบญเบเบเบญเบเบเบฅเบฑเบญเบเบฅเบฐเบซเบฑเบ, เปเบเปเปเบซเบเบเบปเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเปเปเบกเปเบเบเบฒเบเบเบฒเบเบขเบนเปเปเบ Java เบเบญเบเบเบฒเบเบชเบดเปเบ, เปเบเบฑเปเบ: เบเบปเบงเปเบเบเปเบ C #, เบเบปเบงเบเบตเปเบซเบเปเบฒเบเบตเปเบเบฒเบ C ++, เบซเบผเบทเบขเบนเป. เบขเปเบฒเบเบซเบเปเบญเบ goto เบเบตเปเบฎเปเบฒเบเปเบฅเบฐเบเบตเปเบฎเปเบฒเบ, เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบขเปเบฒเบเบชเบงเบเบเบฒเบก. เบเปเบฒเบเปเบฒเบเบฎเบนเปเบงเบดเบเบตเปเบฎเบฑเบเปเบซเปเบฅเบฐเบซเบฑเบเบกเบตเบเบงเบฒเบกเบชเบฐเบซเบเปเบฒเบเบฒเบกเปเบฅเบฑเบเบเปเบญเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบเบตเบเปเบญเบเบฎเบฑเบเบเปเบฒเบงเบดเบเบฒเบเปเบเบเปเบฒเปเบซเบฑเบ. เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบญเบ เบเบณ เปเบเบฑเบเบเปเบญเบเบกเบตเบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบก String-delegate เบขเบนเปเบเบตเปเบเบตเป, เปเบเปเบเปเปเบกเบตเบเบนเปเปเบเบ ...
private void selector()
{
do{
if (typeOfCommand.equals("get")){
get(sourcePath, destPath);
break;
}
if (typeOfCommand.equals("put")){
put(sourcePath, destPath);
break;
}
showErrorMessage();
}
while (false);
}
}
TFTPSserver
เบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบเปเบฒเบเบเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบฅเบนเบเบเปเบฒ, เปเบเบเปเบฅเบฐเบเบฐเบซเบเบฒเบเปเบซเบเป, เบเบฝเบเปเบเปเบขเบนเปเปเบเบเปเบฒเบชเบฑเปเบเบเบฑเปเบเบกเบฒเบเบฒเบเปเบเปเบเบเบดเบก, เปเบเปเบเบฒเบเปเบเบปเปเบฒเบฎเบฑเบ. เบเบฒเบเบชเปเบงเบเบเบญเบเบงเบดเบเบตเบเบฒเบเปเบเบเบเบปเปเบงเปเบเปเบกเปเบเบเบทเบเบฑเบ, เบชเบฐเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบญเปเบฒเบเปเบเบดเบเบเบงเบเปเบเบปเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบเบฐเบเบฝเบเปเบเปเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบ.
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบ, เบงเบดเบเบตเบเบฒเบเปเบฅเปเบเปเบกเปเบเปเบเป, เปเบเบดเปเบเปเบเปเบฎเบฑเบเบเบญเบเปเบเบฑเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบเปเบฅเบฐเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบปเปเบฒเบฎเบฑเบเปเบ loop เบเบดเบฅเบฑเบเบเบญเบ.
public void run(int port) {
this.port = port;
incialization();
while (true) {
getAndParseInput();
selector();
}
}
เบงเบดเบเบตเบเบฒเบเบงเบฒเบ, เปเบเบดเปเบเบซเปเปเบงเบดเบเบตเบเบฒเบ writeToFileFromSocket เบเบตเปเปเบเบตเบเบเบฐเปเบชเบเบฒเบเบเบฝเบเปเบเบซเบฒเปเบเบฅเปเปเบฅเบฐเบเบฝเบ input bytes เบเบฑเบเบซเบกเบปเบเบเบฒเบ socket, เบชเบฐเปเบเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเบตเปเปเบซเปเปเบซเบฑเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเบเบญเบเบเบฒเบเปเบญเบเบเปเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบฝเบเบชเปเบฒเปเบฅเบฑเบ.
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());
}
}
เบงเบดเบเบตเบเบฒเบ get เบเบถเบเปเบเบฅเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบงเปเบเบเบฒเบเบฅเบนเบเบเปเบฒเบเบญเบเปเบเบฅเปเบเบฅเบก, เปเบเบทเปเบญเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเปเบเบเบฒเบเปเบญเบเปเบเบฅเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฎเบนเปเบเบฐเบซเบเบฒเบเบเบญเบเบกเบฑเบ, เปเบเบฑเบเปเบงเปเปเบเบเปเบฒเบเบงเบเบเบฒเบง, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเปเบเปเบเบกเบฑเบเบญเบญเบเปเบเบฑเบ 4 bytes, เปเบญเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ byte-by-byte. เปเบเบซเบฒเปเบเบปเปเบฒเบฎเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเปเบฎเบฑเบเปเบฅเบฐเบเบฐเบเบญเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบขเบนเปเปเบเบฅเบนเบเบเปเบฒเปเบเบฑเบเบเบปเบงเปเบฅเบเบเบฑเบเบเบทเบเปเบเบเปเบญเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบญเบ bytes เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฐเบเบญเบเปเบเบฑเบเปเบเบฅเป, เบญเปเบฒเบเบเบฒเบเบเบฐเปเบชเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบฅเป.
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 เปเบกเปเบเบเบทเบเบฑเบเบเบฑเบเบขเบนเปเปเบเบฅเบนเบเบเปเบฒ, เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฝเบเปเบเปเบงเปเบฒเบกเบฑเบเบญเปเบฒเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบปเปเบฒเบฎเบฑเบเปเบเบเบเบตเปเบเบฐเบกเบฒเบเบฒเบเปเบเปเบเบเบดเบก. เบฅเบฐเบซเบฑเบเปเบกเปเบเบขเบนเปเปเบ repository, เบเบทเบเบฑเบเบเบฑเบเบเบปเบงเปเบฅเบทเบญเบ.
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบเบเบฅเบฑเบญเบเปเบเบเบเปเบฒเบเบซเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ, เปเบเบฒเบฐเบงเปเบฒ เบเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเป, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบญเบเบเปเบฒเบเปเบกเปเบเบชเปเบฒเปเบฅเบฑเบ, เบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบเปเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒเปเบฅเบฐเบเบถเบเบเบทเบเปเบซเบกเป - เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเบฒเบเบฎเบปเปเบงเปเบซเบผเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ.
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());
}
}
เปเบเบทเปเบญเบชเบฐเบซเบผเบธเบ:
เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบฝเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบญเบเบเปเบฝเบงเบเบฑเบเปเบเปเบเบเบญเบเบเบฒเบเปเบญเบเบเปเปเบกเบนเบเปเบเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเบดเบเบญเบญเบเบงเปเบฒเบกเบฑเบเบเบงเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ. เปเบเบซเบผเบฑเบเบเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเปเบเปเบเบปเปเบเบเบปเบเบญเบฒเปเบกเบฅเบดเบเบฒเบขเบนเปเบเบตเปเบเบตเปเปเบฅเบฐเบเปเปเปเบเปเบเบฝเบเบชเบดเปเบเปเบซเบกเปเบซเบผเบฒเบ, เปเบเปเบเปเปเบกเบตเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเปเบฝเบงเบเบฑเบ Habre, เปเบฅเบฐเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเบเบฝเบเบเบปเบเปเบฅเบทเปเบญเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเปเบฒเปเบเป cmd เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบเปเปเปเบเบฐเบเปเบญเบเบกเบฑเบ.
เปเบญเบเบฐเบชเบฒเบเบญเปเบฒเบเบญเบตเบ:
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com