Commit 5d1d832d authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch15] Book version of SimpleChatServer

parent bd389e14
Loading
Loading
Loading
Loading
+10 −13
Changes for src/main/java/ch15/SimpleChatServer.java: 10 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -3,26 +3,27 @@ package ch15;
import java.io.*;
import java.net.InetSocketAddress;
import java.nio.channels.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.*;
import java.util.concurrent.*;

import static java.nio.charset.StandardCharsets.UTF_8;

public class SimpleChatServer {
  private final ArrayList<PrintWriter> clientWriters = new ArrayList<>();
  private final List<PrintWriter> clientWriters = new ArrayList<>();

  public static void main(String[] args) {
    new SimpleChatServer().go();
  }

  public void go() {
    ExecutorService threadPool = Executors.newFixedThreadPool(5);
    ExecutorService threadPool = Executors.newCachedThreadPool();
    try {
      ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
      serverSocketChannel.bind(new InetSocketAddress(5000));

      while (serverSocketChannel.isOpen()) {
        SocketChannel clientSocket = serverSocketChannel.accept();
        PrintWriter writer = new PrintWriter(Channels.newWriter(clientSocket, StandardCharsets.UTF_8));
        PrintWriter writer = new PrintWriter(Channels.newWriter(clientSocket, UTF_8));
        clientWriters.add(writer);
        threadPool.submit(new ClientHandler(clientSocket));
        System.out.println("got a connection");
@@ -32,14 +33,10 @@ public class SimpleChatServer {
    }
  }

  public void tellEveryone(String message) {
    for (Writer writer : clientWriters) {
      try {
        writer.append(message).write("\n");
  private void tellEveryone(String message) {
    for (PrintWriter writer : clientWriters) {
      writer.println(message);
      writer.flush();
      } catch (IOException ex) {
        ex.printStackTrace();
      }
    }
  }

@@ -49,7 +46,7 @@ public class SimpleChatServer {

    public ClientHandler(SocketChannel clientSocket) {
      socket = clientSocket;
      reader = new BufferedReader(Channels.newReader(socket, StandardCharsets.UTF_8));
      reader = new BufferedReader(Channels.newReader(socket, UTF_8));
    }

    public void run() {