The objective of this programming project is to learn UDP reliable client-server interaction using UDP socket interface in C programming language. After completing the project, you will have a basic understanding of the steps required to add reliability features in UDP applications for developing a networking application.
| Multicast Broadcast using UDP 1 1. Objective The objective of this programming project is to learn UDP reliable client-server interaction using UDP socket interface in C programming language. After completing the project, you will have a basic understanding of the steps required to add reliability features in UDP applications for developing a networking application. 2. Project Specification Multicast only applies to UDP, which is connectionless and provide no reliability. Multicast is unreliable as there is no guarantee that every multicast message destined for the same multicast group address will be received by every host subscribing to this multicast group. In order to fit the reliability needs of multicast applications, many schemes have been proposed. In this project, you are required to implement a Multicast Server and a Client in C language that implements a simple version of multicasting. Allow up to 5 clients to simultaneously subscribe to the multicast group served by your Multicast Server. Each of the subscribing clients will be executed on a distinct host in the CS GPEL machine, and the multicast server will keep track of all current subscribed clients every time the server multicasts a message. CS-4133-5133: Data Networks Project-3 Multicast Broadcast using UDP Due Date: Upload to Canvas 11/27/2022 100 pts Multicast Server Join Join join Join Join Broadcast Data Broadcast Data Broadcast Data Subscriber Subscriber Subscriber Subscriber Subscriber Broadcast Data Broadcast Data Fall - 2022 | Multicast Broadcast using UDP 2 2.1. Multi-cast Server Behavior: • At startup, the server takes an argument that specifies the port number that it is listening to. You have to use (5000+last 4 digits of your student-id number) to avoid requesting same port by multiple students. • After successful startup, the multi-cast server program will ask the user to create a group (e.g., OUCS) and maximum number of clients (e.g., 5) can join in the group to receive broadcast messages. • Next, your multicast server should prompt the user to enter the number of messages to be multi- casted among clients. At the same time, your multicast server should listen for joining and leaving requests from the clients, until the user finishes inputting all messages. • As clients may use the message “JOIN” to join the multicast group and “QUIT” to leave from the group, server needs to maintain the active client list for message broadcasting purpose. If the client is unable to join the multicast group, send an error message to client (e.g., more than maximum number of clients join the multicast group). If any client is removed from the active client list, the server should print out the client IP + port information. • When sending out a message, your multicast server should display the content of the message. • When accepting a message, your multicast client should display the content of the message. • Server requires unsubscribing all clients from the group (e.g., OUCS) as soon as it receives the string “CLEARALL” from user input. 2.2. Client Behavior: • Your client program needs to take two arguments from user during startup that specifies the IP address and port number of the multi-cast server it wants to access. • After a successful startup, your sender program will first prompt a welcome message that asks the user to input a group name (e.g., OUCS) it wants to join. • Next, client requires to send the message “JOIN” to join the multicast group to receive messages from the multi-cast server. • Similarly, client can send the message “QUIT” to unsubscribe from the group and receive no further messages from the server. • When accepting a message, your multicast client should display the content of the message. 3. Programming Notes: You have to use UDP sockets for implementing both client and server programs. You are allowed to use multi-threading in this project, if requires. You should program each process to print an informative statement whenever it takes an action (e.g., sends or receives a message, detects termination of input, etc.), so that you can see that your processes are working either correctly or not. One should be able to determine from this output if your processes are working correctly. You should hand in screen shots (or file content, if your process is writing to a file) of these informative messages. | Multicast Broadcast using UDP 3 Make sure, your multicast server allow the user to specify the listening port number and multicast group name during startup. Make sure you close every socket that you use in your program. If you abort your program, the socket may still hang around and the next time you try and bind a new socket to the port ID you previously used (but never closed), you may get an error. Also, please be aware that port ID's, when bound to sockets, are system-wide values and thus other students may be using the port number you are trying to use though it’s not recommended. If you need to kill a process after you have started it, you can use the LINUX kill command. Use the LINUX ps command to find the process id of your server. Any clarifications and revisions to the project will be posted on the course web page on Canvas. Students are encouraged to start this project early and use the project discussion group on Canvas for any general questions so that everyone can benefit from the replies. 4. File names: File names for this project are as follows: Client: lastNameReliableUDPClient.c Multi-cast Server: lastNameReliableUDPServer.c 5. Points Distribution: Bits and pieces Points Multicast Client Program 30 Multicast Server Program 40 Program Style (Coding style, comments etc.) 10 Documentation 20 | Multicast Broadcast using UDP 4 6. Submission Instructions: This project requires the submission of a soft copy. Plagiarism will not be tolerated under any circumstances. Participating students will be penalized depending on the degree of plagiarism. Soft Copy (Due November 27, 2022, 11:59 pm) The soft copy should consist of: • source code of the Client program, • source code of the Multicast server program, • any header file(s), and • detailed documentation(4 to 5 pages long in 1.5 line space and a font size of 11) should consist of: o discussion of your problem solving approach, o detailed analysis of your implemented codes, o any legitimate assumption(s) with justification, and o screen shots of outputs These must be submitted through Canvas. 7. Late Penalty: Submit your project on or before the due date to avoid any late penalty. A late penalty of 15% per day will be imposed after the due date. After one week from the due date, you will not be allowed to submit the project. Good Luck!!