Advertisement
AngelovskiK

Оперативни Системи Лабс 3-4 Гласање

Jun 26th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.41 KB | None | 0 0
  1. // SERVER
  2.  
  3. package labs2.com;
  4.  
  5. import java.io.*;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.util.concurrent.Semaphore;
  9.  
  10. public class Main {
  11.  
  12.     private ServerSocket server;
  13.     private static Semaphore vrski = new Semaphore(100);
  14.     private static Semaphore[] glasaZa;
  15.     private static String[] kandidati = {"Кристијан Ангеловски", "Маја Живкович", "Сара Гајдовска", "The Grinch"};
  16.     private static Integer[] glasanja = {0, 0, 0, 0};
  17.     static class ServerWorkerThread extends Thread {
  18.         Socket client;
  19.         DataInputStream reader;
  20.         DataOutputStream dataOutputStream;
  21.  
  22.         ServerWorkerThread(Socket client) throws IOException {
  23.             this.client = client;
  24.             reader = new DataInputStream(client.getInputStream());
  25.             dataOutputStream = new DataOutputStream(client.getOutputStream());
  26.         }
  27.  
  28.         @Override
  29.         public void run() {
  30.             try {
  31.                 for (int i = 0; i < kandidati.length; i++) {
  32.                         dataOutputStream.writeUTF((i+1)+" - "+kandidati[i]+"\n");
  33.                 }
  34.                 dataOutputStream.writeUTF("KRAJKANDIDATI");
  35.             } catch (IOException e) {
  36.                 e.printStackTrace();
  37.             }
  38.             try {
  39.                 Integer choice = reader.readInt();
  40.                 //choices pocnuvaat od 1 do length zatoa -1 :D
  41.                 if(choice > 0 && choice <= glasaZa.length) {
  42.                     glasaZa[choice-1].acquire();
  43.                     glasanja[choice-1]++;
  44.                     glasaZa[choice-1].release();
  45.                 }
  46.                 vrski.release();
  47.             } catch (IOException | InterruptedException e) {
  48.                 e.printStackTrace();
  49.             }
  50.  
  51.         }
  52.     }
  53.  
  54.  
  55.     //todo: Initialize server
  56.     Main(int port) throws IOException {
  57.         server = new ServerSocket(port);
  58.     }
  59.  
  60.     static class ServerHandler extends Thread{
  61.         ServerSocket serverSocket;
  62.  
  63.         public ServerHandler(int port) throws IOException {
  64.             this.serverSocket = new ServerSocket(port);
  65.         }
  66.  
  67.         public void run() {
  68.             Socket client;
  69.             while(true) {
  70.                 try {
  71.                     client = serverSocket.accept();
  72.                     vrski.acquire();
  73.                     ServerWorkerThread workerThread = new ServerWorkerThread(client);
  74.                     workerThread.start();
  75.                 } catch (IOException | InterruptedException e) {
  76.                     e.printStackTrace();
  77.                 }
  78.             }
  79.         }
  80.     }
  81.  
  82.     public static void main(String[] args) throws IOException, InterruptedException {
  83.         // todo: Start server
  84.         glasaZa = new Semaphore[kandidati.length];
  85.         for (int i = 0; i < glasaZa.length; i++) {
  86.             glasaZa[i] = new Semaphore(1);
  87.         }
  88.         ServerHandler handler = new ServerHandler(8080);
  89.         handler.start();
  90.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  91.         String line;
  92.         while((line = br.readLine()) != null) {
  93.             if(line.equals("proveri")) {
  94.                 int suma = 0;
  95.                 for (int i = 0; i < glasanja.length; i++) {
  96.                     glasaZa[i].acquire();
  97.                     System.out.println("Br. na glasa za kandidat " + kandidati[i] + " = " + glasanja[i]);
  98.                     suma += glasanja[i];
  99.                     glasaZa[i].release();
  100.                 }
  101.                 System.out.println("Vkupno: "+suma);
  102.             }
  103.         }
  104.     }
  105. }
  106.  
  107. // CLIENT
  108. package labs2.com;
  109.  
  110. import java.io.*;
  111. import java.net.Socket;
  112.  
  113. public class Main {
  114.  
  115.     public static void main(String []args) throws IOException {
  116.         Socket socket = new Socket("localhost", 8080);
  117.         DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
  118.         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
  119.         DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
  120.         String line;
  121.         while(!(line = dataInputStream.readUTF()).isEmpty()){
  122.             if(line.equals("KRAJKANDIDATI")){
  123.                 break;
  124.             }
  125.             System.out.println(line);
  126.         }
  127.         int choice = Integer.valueOf(bufferedReader.readLine());
  128.         dataOutputStream.writeInt(choice);
  129.     }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement