Advertisement
CSenshi

OOP - Statuses (ServerSide)

Jul 1st, 2019
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.22 KB | None | 0 0
  1. package f2015.ex3;
  2.  
  3. import java.io.*;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8.  
  9. public class Server {
  10.     public static void main(String[] args) {
  11.         try {
  12.             Map<String, String> mp = new HashMap<>();
  13.             ServerSocket ss = new ServerSocket(8080);
  14.             while (true) {
  15.                 Socket s = ss.accept();
  16.                 System.out.println("New Connection!");
  17.                 new worker(s, mp).start();
  18.             }
  19.         } catch (IOException e) {
  20.             e.printStackTrace();
  21.         }
  22.     }
  23.  
  24.  
  25.     private static class worker extends Thread {
  26.         private PrintWriter pw;
  27.         private BufferedReader br;
  28.         private Map<String, String> mp;
  29.  
  30.         worker(Socket s, Map<String, String> mp) {
  31.             try {
  32.                 InputStream is = s.getInputStream();
  33.                 InputStreamReader isr = new InputStreamReader(is);
  34.                 br = new BufferedReader(isr);
  35.  
  36.                 OutputStream os = s.getOutputStream();
  37.                 pw = new PrintWriter(os, true);
  38.                 this.mp = mp;
  39.             } catch (IOException e) {
  40.                 e.printStackTrace();
  41.             }
  42.         }
  43.  
  44.         public void run() {
  45.             while (true) {
  46.                 try {
  47.                     String line = br.readLine();
  48.                     System.out.println("New Request : " + line);
  49.                     if (line.contains(":"))
  50.                         change_status(line);
  51.                     else
  52.                         send_status(line);
  53.                 } catch (IOException e) {
  54.                     e.printStackTrace();
  55.                 }
  56.             }
  57.         }
  58.  
  59.         private void change_status(String line) {
  60.             int ind = line.indexOf(":");
  61.             String name = line.substring(0, ind);
  62.             String status = line.substring(ind + 1);
  63.             synchronized (mp) {
  64.                 mp.put(name, status);
  65.             }
  66.         }
  67.  
  68.         private void send_status(String line) {
  69.             String status;
  70.             synchronized (mp) {
  71.                 status = mp.get(line);
  72.             }
  73.             this.pw.println(status);
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement