Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Utilize Sockets for communication between processes. Your task is to write a client and a server. The client and server will demonstrate a message posting

Utilize Sockets for communication between processes.

Your task is to write a client and a server.

The client and server will demonstrate a message posting system. The server will maintain messages posted by clients, which clients can retrieve and view.

The client will:

1)Accept a machine name and port number to connect to as command line arguments.

2)Connect to the server.

3)Prompt for and send the users name.

4)Present the following menu of choices to the user:

a.Display the names of all known users.

b.Display the names of all currently connected users.

c.Send a text message to a particular user.

d.Send a text message to all currently connected users.

e.Send a text message to all known users.

f.Get my messages.

g.Exit.

5)Interact with the server to support the menu choices.

6)Ask the user for the next choice or exit.

The server will:

1)Accept a port number as a command line argument.

2)Accept connections from clients.

3)Create a new thread for each client.

4)Store messages sent to each user.

5)End by termination with control-C.

The server thread will:

1)Accept and process requests from the client.

2)Add the users name to the list of known users.

3)Provide mutual exclusion protection for the data structure that stores the messages.

4)Send only the minimal data needed to the client, not the menu or other UI text.

Other rules:

1)Each client transaction should interact with the server. Clients will not communicate directly with each other.

2)Configuration: your server should support multiple different clients at the same time, but should not allow the same user name to have more than one connection at the same time.

3)Authentication: assume the client has privileges to use the systemdo not require a password.

4)Limits: you can assume a maximum of 100 known users, and a maximum of 10 messages each, where each message is at most 80 characters long.

5)Persistence: when the server exits the messages it is storing are lost. They will not be saved to a file. When a user gets their messages, those messages are removed from the server.

6)Users: a known user is any user who has connected during the server session, but may or may not be currently connected. Also, a message sent to an unknown user makes them known.

7)Errors: obvious errors should be caught and reported. For example, an invalid menu choice.

8)Output: your output should use the same wording and format as the sample output.

Sample output (assumes Joe has already connected):

Client output for user Sue:

>client cs1 2005

Connecting to cs1:2005

Enter your name: Sue

1. Display the names of all known users.

2. Display the names of all currently connected users.

3. Send a text message to a particular user.

4. Send a text message to all currently connected users.

5. Send a text message to all known users.

6. Get my messages.

7. Exit.

Enter your choice: 1

Known users:

Sue

Joe

1. Display the names of all known users.

2. Display the names of all currently connected users.

3. Send a text message to a particular user.

4. Send a text message to all currently connected users.

5. Send a text message to all known users.

6. Get my messages.

7. Exit.

Enter your choice: 3

Enter recipient's name: Joe

Enter a message: Hello Joe

Message posted to Joe

1. Display the names of all known users.

2. Display the names of all currently connected users.

3. Send a text message to a particular user.

4. Send a text message to all currently connected users.

5. Send a text message to all known users.

6. Get my messages.

7. Exit.

Enter your choice: 6

Your messages:

From Joe, 04/11/13 03:14 PM, Hello Sue

From Joe, 04/11/13 03:15 PM, Whats new?

1. Display the names of all known users.

2. Display the names of all currently connected users.

3. Send a text message to a particular user.

4. Send a text message to all currently connected users.

5. Send a text message to all known users.

6. Get my messages.

7. Exit.

Enter your choice: 7

Server sample output:

>server 2005

04/11/13, 3:10 PM, Connection by known user Sue.

04/11/13, 3:12 PM, Connection by unknown user Joe.

04/11/13, 3:13 PM, Sue displays all known users.

04/11/13, 3:13 PM, Sue posts a message for Joe.

04/11/13, 3:13 PM, Joe displays all connected users.

04/11/13, 3:14 PM, Joe posts a message for Sue.

04/11/13, 3:15 PM, Joe posts a message for Sue.

04/11/13, 3:17 PM, Sue gets messages.

04/11/13, 3:20 PM, Sue exits

04/11/13, 3:21 PM, Joe exits

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

OpenStack Trove

Authors: Amrith Kumar, Douglas Shelley

1st Edition

1484212215, 9781484212219

More Books

Students also viewed these Databases questions

Question

LO2 Distinguish among three types of performance information.

Answered: 1 week ago