Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SERVER
- package labs2.com;
- import java.io.*;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.concurrent.Semaphore;
- public class Main {
- private ServerSocket server;
- private static Semaphore vrski = new Semaphore(100);
- private static Semaphore[] glasaZa;
- private static String[] kandidati = {"Кристијан Ангеловски", "Маја Живкович", "Сара Гајдовска", "The Grinch"};
- private static Integer[] glasanja = {0, 0, 0, 0};
- static class ServerWorkerThread extends Thread {
- Socket client;
- DataInputStream reader;
- DataOutputStream dataOutputStream;
- ServerWorkerThread(Socket client) throws IOException {
- this.client = client;
- reader = new DataInputStream(client.getInputStream());
- dataOutputStream = new DataOutputStream(client.getOutputStream());
- }
- @Override
- public void run() {
- try {
- for (int i = 0; i < kandidati.length; i++) {
- dataOutputStream.writeUTF((i+1)+" - "+kandidati[i]+"\n");
- }
- dataOutputStream.writeUTF("KRAJKANDIDATI");
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- Integer choice = reader.readInt();
- //choices pocnuvaat od 1 do length zatoa -1 :D
- if(choice > 0 && choice <= glasaZa.length) {
- glasaZa[choice-1].acquire();
- glasanja[choice-1]++;
- glasaZa[choice-1].release();
- }
- vrski.release();
- } catch (IOException | InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- //todo: Initialize server
- Main(int port) throws IOException {
- server = new ServerSocket(port);
- }
- static class ServerHandler extends Thread{
- ServerSocket serverSocket;
- public ServerHandler(int port) throws IOException {
- this.serverSocket = new ServerSocket(port);
- }
- public void run() {
- Socket client;
- while(true) {
- try {
- client = serverSocket.accept();
- vrski.acquire();
- ServerWorkerThread workerThread = new ServerWorkerThread(client);
- workerThread.start();
- } catch (IOException | InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- public static void main(String[] args) throws IOException, InterruptedException {
- // todo: Start server
- glasaZa = new Semaphore[kandidati.length];
- for (int i = 0; i < glasaZa.length; i++) {
- glasaZa[i] = new Semaphore(1);
- }
- ServerHandler handler = new ServerHandler(8080);
- handler.start();
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String line;
- while((line = br.readLine()) != null) {
- if(line.equals("proveri")) {
- int suma = 0;
- for (int i = 0; i < glasanja.length; i++) {
- glasaZa[i].acquire();
- System.out.println("Br. na glasa za kandidat " + kandidati[i] + " = " + glasanja[i]);
- suma += glasanja[i];
- glasaZa[i].release();
- }
- System.out.println("Vkupno: "+suma);
- }
- }
- }
- }
- // CLIENT
- package labs2.com;
- import java.io.*;
- import java.net.Socket;
- public class Main {
- public static void main(String []args) throws IOException {
- Socket socket = new Socket("localhost", 8080);
- DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
- DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
- String line;
- while(!(line = dataInputStream.readUTF()).isEmpty()){
- if(line.equals("KRAJKANDIDATI")){
- break;
- }
- System.out.println(line);
- }
- int choice = Integer.valueOf(bufferedReader.readLine());
- dataOutputStream.writeInt(choice);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement