

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A programming assignment for cmsc 417 computer networks students in fall 2021. The goal is to reverse engineer a chat server and its protocol to create a compatible replacement or implement a compatible client. Details on the client and server, their functionalities, and the grading process.
Typology: Slides
1 / 3
This page cannot be seen from the preview
Don't miss anything!


CMSC 417 Computer Networks Fall 2021
Assigned: October 7 Due: October 22, 11:59:59 PM. Weight: 1.5x
In this project, we will be providing a chat client and will host a chat server. Clients allow users to communicate with one another by connecting to the server and interacting with it in accordance to an application protocol. Through this protocol, the server allows clients to engage in group chats in chat rooms and send private messages to one another. Your task will be to reverse engineer the chat server and its protocol and use this information to write a compatible replacement. Alternatively, you may elect to take a 20 point penalty and instead implement a compatible client.
The client is available in the âmaterialsâ repository under the âassignment3â directory. The provided client takes single optional command line argument:
While running, the client takes commands directly from the user. All commands are preceded by a backslash. Not every command is available in every context. The client supports the following commands:
All other input is interpreted as a message being sent to the room the user is currently in.
We will be running a server; see Piazza for details.
Your replica client must not take any required arguments, and does not need to support the - u option. The output of your replica client must exactly match that of the provided client for all sequences of commands and messages. You can test your replica client implementation by comparing the output to that of the provided client using diff.
Your replica server must support the following command line arguments:
Your project grade will depend on how much client functionality is maintained when connecting to your server. We will test your server by running the client in standard input and output mode (i.e., without the -u option) and directly comparing the output with identical input against your server and the reference implementation. If you elect to implement the client instead of the server (and take the 20 point penalty), we will diff the output of your client when fed identical input against the reference client in standard input and output mode. We strongly encourage you to write tests against the reference implementation to compare against your own implementation.