Loading src/main/java/ch15/SimpleChatServer.java +14 −17 Changes for src/main/java/ch15/SimpleChatServer.java: 14 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -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(); } } } Loading @@ -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) { Loading Loading
src/main/java/ch15/SimpleChatServer.java +14 −17 Changes for src/main/java/ch15/SimpleChatServer.java: 14 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -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(); } } } Loading @@ -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) { Loading