Advertisement
Dido09

Server

Dec 16th, 2022 (edited)
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.58 KB | None | 0 0
  1. package newpackage;
  2.  
  3. import com.sun.deploy.util.SessionState;
  4.  
  5. import java.io.IOException;
  6. import java.io.PrintStream;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.Objects;
  12. import java.util.Scanner;
  13.  
  14. public class Server {
  15.  
  16.  
  17.     public Server() {
  18.         clients = new ArrayList<>();
  19.         lock = new Object();
  20.     }
  21.  
  22.     public static void main(String[] args) throws IOException {
  23.         Server server = new Server();
  24.         server.start();
  25.     }
  26.  
  27.     private List<PrintStream> clients;
  28.     private final Object lock;
  29.  
  30.  
  31.     public void start() throws IOException {
  32.         try (ServerSocket serverSocket = new ServerSocket(2101)) {
  33.  
  34.             while (true) {
  35.                 Socket client = serverSocket.accept();
  36.  
  37.                 Thread clientThread = new Thread(() -> {
  38.                     try {
  39.                         Scanner in = new Scanner(client.getInputStream());
  40.                         PrintStream out = new PrintStream(client.getOutputStream());
  41.  
  42.                         synchronized (lock) {
  43.                             clients.add(out);
  44.                         }
  45.  
  46.                         while (true) {
  47.                             String line = in.nextLine();
  48.                             if (line.contains("quit")) {
  49.                                 synchronized (lock) {
  50.                                     clients.remove(out);
  51.                                 }
  52.                                 return;
  53.                             }
  54.  
  55.  
  56.                             for (PrintStream c : clients)
  57.                                 c.println(line);
  58.                         }
  59.                     } catch (IOException e) {
  60.                         e.printStackTrace();
  61.                     }
  62.                 });
  63.                 clientThread.start();
  64.  
  65.             }
  66.         } catch (IOException e) {
  67.             e.printStackTrace();
  68.         }
  69.     }
  70. }
  71. //////////////////////////////////////////////////////////////////////
  72. package newpackage;
  73.  
  74. import java.io.IOException;
  75. import java.io.PrintStream;
  76. import java.net.Socket;
  77. import java.util.Scanner;
  78.  
  79. public class Client {
  80.     public static void main(String[] args) {
  81.         Client client = new Client();
  82.         client.start();
  83.     }
  84.  
  85.     public void start() {
  86.         try {
  87.             Socket server = new Socket("localhost", 2101);
  88.  
  89.             Scanner in = new Scanner(server.getInputStream());
  90.             PrintStream out = new PrintStream(server.getOutputStream());
  91.  
  92.             Thread readerThread = new Thread(() -> {
  93.                 while (true) {
  94.                     if (in.hasNextLine())
  95.                         System.out.println(in.nextLine());
  96.                 }
  97.             });
  98.  
  99.             Thread writerThread = new Thread(() -> {
  100.                 Scanner console = new Scanner(System.in);
  101.                 String myName = console.nextLine();
  102.  
  103.                 while (true) {
  104.                     String line = console.nextLine();
  105.                     out.println(myName + ": " + line);
  106.                     if (line.contains("quit")) {
  107.                         try {
  108.                             server.close();
  109.                         }
  110.                         catch (IOException e){
  111.                             e.printStackTrace();
  112.                         }
  113.  
  114.                         return;
  115.                     }
  116.                 }
  117.             });
  118.  
  119.             readerThread.start();
  120.             writerThread.start();
  121.  
  122.  
  123.         } catch (IOException e) {
  124.             e.printStackTrace();
  125.         }
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement