Advertisement
brsjak

OS - JavaIO & Networking Ispitna

Jan 23rd, 2020
1,350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.29 KB | None | 0 0
  1. /*
  2. Клиентите рекурзивно ги изминуваат сите документи во даден именик и неговото поддрво и  ги пребаруваат сите .txt или .dat документи кои се помали од 512KB. Од сите откриени датотеки кои го исполнуваат условот, клиентот креира files.csv фајл во директориумот кој се предава како аргумент на конструкторот на клиентот folderTxtOutput, со што во секоја редица запишува апсолутна патека и големина на фајлот одделени со запирка. Потоа големината во бајти, датумот на последна промена (како податок од Long тип) на креираниот фајл files.csv, клиентите треба да ја пратат до серверот.
  3.  
  4. Серверот кога ќе прими порака од одреден клиент, пораката ја запишува во датотеката clients_data.txt која постои локално кај него. Секоја информација од секој клиент се чува во нова линија во истиот документ, во следниот формат:
  5. <IP-address-of-the-client> <port-of-the-client> <total-size-of-txt-file> <date-of-last-modification-in-long-format>
  6.  
  7. Потребно е да овозможите праќање на податоци од повеќе клиенти едновремено.
  8.  
  9. Серверот слуша на порта 3398. Редоследот на праќање на податоците од клиентите не е важен.
  10.  
  11. Пример
  12.  
  13. Изгледот на една линија од текстуалната датотека files.csv, која секој клиент треба да ја креира, треба да изгледа вака: D:\Data\primer.txt,2487
  14.  
  15. Изгледот на енда линија од текстуалната датотека clients_data.txt кај серверот, по успешна комуникација, треба да изгледа вака: 127.0.0.1 54665 112 1561906170748
  16.  
  17. */
  18. import java.io.BufferedWriter;
  19. import java.io.DataInputStream;
  20. import java.io.DataOutputStream;
  21. import java.io.File;
  22. import java.io.FileWriter;
  23. import java.io.IOException;
  24. import java.net.ServerSocket;
  25. import java.net.Socket;
  26.  
  27. public class JavaIOStarter {
  28.    
  29.     static BufferedWriter writer = null;
  30.    
  31.  
  32.     public static void main(String[] args) throws IOException {
  33.         // TODO Auto-generated method stub
  34.        
  35.         Server server = new Server();
  36.         server.start();
  37.        
  38.         Client client1 = new Client("izvorD", "New Folder");
  39.         client1.start();
  40.        
  41.  
  42.     }
  43.    
  44.     static class Client extends Thread{
  45.         File file;
  46.         File folder;
  47.         BufferedWriter writer = null;
  48.        
  49.         Client(String sourceFolder, String folderTxtOutput) throws IOException{
  50.             this.folder=new File(sourceFolder);
  51.             file = new File(folderTxtOutput + "/files.txt");
  52.             this.writer = new BufferedWriter(new FileWriter(file));
  53.         }
  54.        
  55.         @Override
  56.         public void run() {
  57.             try {
  58.                 Socket socket = new Socket("localhost", 3398);
  59.                 DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
  60.                
  61.             }catch(Exception e) {
  62.                 e.printStackTrace();
  63.             }
  64.         }
  65.        
  66.         //REKURZIJA
  67.         public void recursion(File source) throws IOException {
  68.             for(File f : source.listFiles()) {
  69.                 if(f.isFile()) {
  70.                     if(f.getName().endsWith(".txt") || f.getName().endsWith(".dat")) {
  71.                         if(f.length()< 512 * 8000) {
  72.                             toDestination(f);
  73.                         }
  74.                     }
  75.                    
  76.                 }else if(f.isDirectory()) {
  77.                     recursion(f);
  78.                 }
  79.             }
  80.         }
  81.        
  82.         public void toDestination(File f) throws IOException {
  83.             String fileName = null;
  84.             long lenght = 0;
  85.             String path = null;
  86.            
  87.            
  88.             try {
  89.                 fileName = f.getName();
  90.                 lenght = f.length();
  91.                 path = f.getAbsolutePath();
  92.                
  93.                 writer = new BufferedWriter(new FileWriter(file,true));
  94.                
  95.                 writer.write(fileName + " " + lenght + " " + path+ "\n");
  96.                
  97.             }catch(Exception e) {
  98.                 e.printStackTrace();
  99.             }finally {
  100.                 if(writer!=null) {
  101.                     writer.close();
  102.                 }
  103.             }
  104.            
  105.         }
  106.     }
  107.    
  108.     static class Server extends Thread{
  109.         ServerSocket ss;
  110.        
  111.         public Server() throws IOException {
  112.             ss = new ServerSocket(3398);
  113.         }
  114.        
  115.         public void run() {
  116.             try {
  117.                 Socket client;
  118.                
  119.                 while(true) {
  120.                    
  121.                     client=ss.accept();
  122.                     ServerWorkerThread workerThread = new ServerWorkerThread(client);
  123.                     workerThread.start();
  124.                 }
  125.                
  126.             }catch(Exception e) {
  127.                 e.printStackTrace();
  128.             }
  129.         }
  130.     }
  131.    
  132.     static class ServerWorkerThread extends Thread{
  133.         private final DataInputStream reader;
  134.         Socket socket;
  135.        
  136.         public ServerWorkerThread(Socket client) throws IOException {
  137.             socket=client;
  138.             reader=new DataInputStream(client.getInputStream());
  139.         }
  140.        
  141.         public void run() {
  142.            
  143.            
  144.             try {
  145.                 //zapisuvanje
  146.                 writer = new BufferedWriter(new FileWriter("clients_data.txt",true));
  147.                 writer.write(socket.getInetAddress().toString() + " " + socket.getLocalPort() +"\n");
  148.                
  149.             }catch(Exception e) {
  150.                 e.printStackTrace();
  151.             }
  152.         }
  153.     }
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement