Implement the same electronic chatroom application that you did for exercise 3.5 above, but this…

Implement the same electronic chatroom application that you did for exercise 3.5 above, but this time using Java's non-blocking I/O on the server. You may very well be able to make use of your original client program, but have the client close its socket only after it has received (and displayed) its own 'Bye' message sent back from the server. You can also now get rid of the code dealing with any NoSuchElementException.
At the server end, you will probably find it useful to maintain two Vectors, the first of these holding references to all SocketChannels of newly-connected clients for which no data has been processed and the second holding references to instances/objects of class ChatUser. Each instance of this class should hold references to the SocketChannel and chatname (a String) associated with an individual chatroom user, with appropriate 'get' methods to retrieve these references. As the first message from a given user (the one
holding the user's chatroom nickname) is processed, the user's SocketChannelreference should be removed from the first Vector and a ChatUser instance created and added to the second Vector. It will probably be desirable to have separate methods to deal with the following:
(i) a user's entry into the chatroom;
(ii) a normal message;
(iii) a user's exit from the chatroom (after sending 'Bye').
Signatures for the first and last of these are shown below.

public static void announceNewUser(
SocketChannel userSocketChannel,
ByteBuffer buffer)
public static void announceExit(String name)
The method for processing an ordinary message has been done for you and is
shown below. public static void broadcastMessage(String chatName, ByteBuffer buffer) {
String messagePrefix = chatName + “: “; byte[] messagePrefixBytes = messagePrefix.getBytes();
final byte[] CR = “n”.getBytes();//Carriage return. try
{ int messageSize = buffer.position(); 90 An Introduction to Network Programming with Javabyte[] messageBytes = buffer.array();
byte[] messageBytesCopy = new byte[messageSize]; for (int i=0; i
buffer.clear(); //Concatenate message text onto message prefix…buffer.put(messagePrefixBytes);
for (int i=0; i
{ buffer.put(messageBytesCopy[i]); } buffer.put(CR);
SocketChannel chatSocketChannel; for (ChatUser chatUser:allUsers)
{ chatSocketChannel =
chatUser.getSocketChannel(); buffer.flip();
//Write full message (with user's name)… chatSocketChannel.write(buffer); } } catch (IOException ioEx) { ioEx.printStackTrace(); } }


Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
The price is based on these factors:
Academic level
Number of pages
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more
error: Content is protected !!