แแแแ แซแแแแแ แกแขแแขแแแแแก แกแแ แแแก แแแแแแแแ แ แกแแ แแแแก, แ แแแแแแแช แแซแฆแแแแแ Windows-แแก แแแแกแแแแก แแแแฃแแแแฃแ แ แแ แแแ แแแแแแก แแแ แกแแแแแฃแ แแแแฎแแ แชแแแแแแแก, แฉแแแ แแ แจแแแแแซแแแ แแ แจแแแแฎแแ TFTP (Trivial File Transfer Protocol) - แแแ แขแแแ แคแแแแแก แแแแแชแแแแก แแ แแขแแแแแก.
แ แแแแ แช แแแแ แแ แแก, แแแแแ แแแแแแ แแแแแแแแแ แแแแ แแแแ, แแแแฎแแ แแแแ, แ แแแแแแช แแฎแแ แชแแแแแแก แกแแญแแ แ แคแฃแแฅแชแแแก แแกแแแแกแก แแ แแแแแแแแแแแแ. แแแขแ แแแขแแแ - แญแ แแแแก แฅแแแจ
แแ แแ แแแแแแแ แแ-แแแกแขแแก แกแแชแแแแแ แ แแแคแแ แแแชแแแก, แ แแแแแก แแแฃแแแแ แขแ แแแแชแแฃแแแ แจแแแแซแแแแ แแฎแแแแ แกแขแแขแแแก แแแแแก, แแ แแฎแแแแ แแแขแงแแ, แ แแ แแแกแ แซแแ แแแแแ แแแฌแแแ TFTP แแ แแก FTP แแ แแขแแแแแแก แแแแแ แขแแแแแฃแแ แแแ แแแชแแ, แ แแแแแจแแช แฌแแแแแแก แแแแขแ แแแแก แแแ แแแแขแ แแ. แฌแแจแแแแแ แแ แกแแแแแแแแแแจแ แแ แแคแแ แแ แแฅ แคแแแแแก แแแฆแแแแกแ แแ แแแแแชแแแแก แแ แซแแแแแแแแก แแแ แแ. แแแแกแแแ, แแแแกแแแแแก, แ แแ แฉแแแแ แแแแฎแแ แชแแแแแแ แชแแขแ แฃแคแ แ แแแแแแแขแฃแ แ แแ แแแแแขแแ แแแฃแแ แแงแแก แแแแแก แแแฌแแ แแก แแแแแแแแแแ แแ แแแชแแแแแแแ, แกแแแขแแฅแกแ แแแแแ แจแแแชแแแแ - แแก แแ แชแแแแก แแแฅแแแแแแแก แแ แแแชแแแแแก, แแแแ แแ แแแขแแ แคแแแกแ, IMHO, แชแแขแ แฃแคแ แ แแแแแแฃแ แ แฎแแแแ แแ แแแ แแแแแแแก FTP แแ TFTP แแแแแแแ แแกแแแฅแขแแแก.
แแแ แซแแ, แแแจแแแแแกแแก แแแแแแขแ แแแฎแแแก แกแแ แแแ แแก IP แแแกแแแแ แแก แแ แแแ แขแก, แ แแแแแแแช แฆแแแ แแแ แแแแฃแแ TFTP (แกแขแแแแแ แขแฃแ แแ แแขแแแแแแแ แจแแฃแแแแกแแแแแแแก แแแแ, แแแแแแจแแฌแแแแแแ แแแแแฉแแแ แแแแฎแแแ แแแแแกแแแแก แแแ แขแแก แแ แฉแแแแก แจแแกแแซแแแแแแแ), แ แแก แจแแแแแแแช แฎแแแแ แแแแจแแ แ, แ แแก แจแแแแแแแแช แแแแแแขแก แจแแฃแซแแแ แแแแแแแแแก แแ แ-แแ แแ แแ แซแแแแแ - แแแแฆแแก แแ แแแแงแแแแก, แแแแฆแแก แแ แแแแแแแแแก แคแแแแ แกแแ แแแ แแ. แงแแแแ แคแแแแ แแแแแแแแแ แแ แแแแ แ แแแแแจแ แแแแแแแก แแแกแแแแ แขแแแแแแแ.
แแ แแขแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ แแ แขแ แแแแชแแฃแแแ แแแงแแแแแแ 4 แแแแกแก:
- TFTPClient
- TFTPS แกแแ แแแ แ
- TFTPClientTester
- TFTPServerTester
แแแแก แแแแ, แ แแ แขแแกแขแแ แแแแก แแแแกแแแ แแ แกแแแแแก แแฎแแแแ แซแแ แแแแแแก แแแแแ แแแแกแแแแก, แแ แแแ แแ แแแแแแแแแแแแ, แแแแ แแ แแแแ แแฅแแแแ แกแแชแแแจแ; แแแกแ แแแฃแแ แจแแแแซแแแแ แแฎแแแแ แกแขแแขแแแก แแแแแก. แแฎแแ แแ แแแแแแฎแแแแ แแแแแแ แแแแกแแแก.
TFTPClient
แแ แแแแกแแก แแแแชแแแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแแ แแแแแแจแแ แแแ แแแกแ 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());
}
}
แแแแแ แแแแแแแแแ แแแแแก แแ แแแแแจแ แแแฌแแแแแฃแ แแแแแแแแแ:
แแฅ แคแแแแ แแแแแแแแแ - แกแแแแแ แแก แแแแแงแแแแแแ, แฉแแแ แฌแแ แแแแแแแแแ แคแแแแแก แจแแแแแแกแก แแแแขแแแแก แแแกแแแแก แกแแฎแแ, แ แแแแแกแแช แกแแแแแแแ แแฌแแ แ แกแแแแขแจแ, แ แแก แจแแแแแแแช แแฎแฃแ แแแ แแ แแกแแ แแฎแกแแแ (แแ แ แงแแแแแแ แแจแแแ แ แแแแแกแแแแแ, แแแแ แแ แแก แฃแแ แฃแแแแแงแแคแก แ แแกแฃแ แกแแแแก แแแแแแแแกแฃแคแแแแแก), แ แแก แจแแแแแแแช แฉแแแ แแแฉแแแแแแ แจแแขแงแแแแแแแแก แฌแแ แแแขแแแฃแแ แแแแแชแแแแก แจแแกแแฎแแ.
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 แแแแขแ, แ แแแแแแแช แจแแแแแแแจแ แแแ แแแแฅแแแแแ แแ แ แ แแชแฎแแแ. แแก แแ แแ แแก แซแแแแแ Java แแแแแแแ, แแก แกแแแแแแ แแกแแแแกแแ 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());
}
}
แกแแแแฅแขแแ แ แแ แแก แคแฃแแฅแชแแ, แ แแแแแแช แแแแกแแแฆแแ แแแก แแ แแแ แแแแก แแแฅแแแแแแแแก แจแแงแแแแแแ แกแขแ แแฅแแแแก แแแฎแแแแแ. แแฅ แงแแแแแคแแ แ แแ แช แแฃ แแกแ แแแแแแแ แแ แแแแแงแแแแแฃแแ แฎแ แแแ แแ แแ แแก แกแแฃแแแแแกแ แแแแแก แแแแแแก แแแ แแ แแซแฃแแแแแแ แแแกแแแแ, แแแแ แแ แแแแก แแแแแแ แ แแแแแแ แแ แแก Java-แจแ แแแแแแ แแ แ แแแแก แแ แแ แกแแแแแ, แ แแแแ แแชแแ แแแแแแแขแแแ C#-แจแ, แคแฃแแฅแชแแแก แแแฉแแแแแแแแแ C++-แแแ แแ แแแแแแฃแ แกแแจแแแแแ แแ แกแแจแแแแแ goto, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแฎแแ แชแแแแแ แแก แแแแแแแ. แแฃ แแชแแ แ แแแแ แแแแแแแแ แแแแ แชแแขแ แฃแคแ แ แแแแแแแขแฃแ แ, แแแแแกแแแแแแ แแ แแขแแแแก แแแแแแขแแ แแแจแ. แแแฉแแแแแแ, แ แแ แแฅ แกแขแ แแแ-แแแแแแแขแฃแ แ แแแฅแกแแแแแแ แกแแญแแ แ, แแแแ แแ แแแแแแแขแ แแ แแ แแก...
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();
}
}
put แแแแแแ, แ แแแแแแช แแฎแแแแก 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());
}
}
แ แแแแฃแแ:
แฉแแแ แแฎแแแฎแแ แแแแฌแแ แแ แฉแแแแ แแแ แแแชแแ แแแแแชแแแแ แแแแแชแแแแก แแแ แขแแ แแ แแขแแแแแแ แแ แแแแแ แแแแแ, แ แแแแ แฃแแแ แแแฃแจแแแก. แแ แแแชแแแจแ, แแ แแฅ แแแแ แแแ แแ แแฆแแแแแฉแแแ แแ แแแแ แ แแฎแแแ แ แแ แแ แแแแแฌแแ แแ, แแแแ แแ แฐแแแ แแแ แแกแแแแกแ แกแขแแขแแแแ แแ แงแแคแแแ แแ cmd-แแก แแแแฃแแแแฃแ แ แแ แแแ แแแแแแก แจแแกแแฎแแ แกแขแแขแแแแแก แกแแ แแแก แแแฌแแ แแก แคแแ แแแแแจแ แจแแฃแซแแแแแแ แแงแ แแแกแแ แแ แจแแแแฎแแ.
แแแฃแแแแ:
แฌแงแแ แ: www.habr.com