Commit 4f00563a authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch15] Simple chat client all works, and the code is fairly simple. Ish.

parent a3b212ba
Loading
Loading
Loading
Loading
+14 −17
Changes for src/main/java/ch15/SimpleChatServer.java: 14 added lines, 17 removed lines.
Original line number Diff line number Diff line
@@ -47,26 +47,22 @@ class ClientHandler implements Runnable {

  public void run() {
    ByteBuffer buffer = ByteBuffer.allocate(80);
    System.out.println("ClientHandler.run");
    try {
      int length;
      while ((length = clientSocket.read(buffer)) != -1) {
        System.out.println(length);
        System.out.println("buffer = " + buffer);
//        System.out.println("received: " + new String(buffer.array()).trim());
      while (clientSocket.read(buffer) != -1) {
        buffer.flip();
        System.out.println("buffer = " + buffer);
        while (buffer.hasRemaining()) {
          clientSocket.write(buffer);
        broadcaster.tellEveryone(buffer);
        buffer.clear();
      }
        buffer.compact();
      disconnectClient();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void disconnectClient() throws IOException {
    clientSocket.close();
    System.out.println("Closed: " + clientSocket);
    broadcaster.remove(clientSocket);
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

@@ -77,16 +73,17 @@ class Broadcaster {
    clientOutputStreams.add(clientSocket);
  }

  public void tellEveryone(ByteBuffer message) {
  public void tellEveryone(ByteBuffer buffer) {
    for (SocketChannel channel : clientOutputStreams) {
      try {
        channel.write(message);
        message.rewind();
        while (buffer.hasRemaining()) {
          channel.write(buffer);
        }
        buffer.rewind();
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
    message.flip();
  }

  public void remove(SocketChannel clientSocket) {