Program Description
In this assignment, you will write two complete C programs to support a client/server model using Linux sockets for a UDP “ping” utility, similar to the ping utility already available on our CSE machines.
•Server
The server program will be called with one command-line argument, the port number being used, such as ./minor4svr 8001. If the user calls the server program with too few or too many arguments, you will print out a usage statement and terminate the program.
The server will set up a UDP socket on the Internet (i.e., INET) domain and then wait in an infinite loop listening for incoming UDP packets, specifically PING messages from a client.
Packet Loss
UDP provides applications with an unreliable transport service. Messages may get lost in the network due to a variety of reasons. Since packet loss is rare or even non-existent in typical campus networks, the server in this lab will inject artificial loss to simulate the effects of network packet loss. The server will simulate 30% packet loss through generation of a seeded, randomized integer that will determine whether a particular incoming PING message is lost or not.
When a PING message comes in and if the packet is not lost, the server will print the client message to the terminal and then send a PONG message back to the client. If the packet is determined to be lost, the server will print an appropriate message to the terminal and simply “eat” the message by not responding to the client.
Requirements
• Your code should be well documented in terms of comments. For example, good comments in general consist of a header (with your name, course section, date, and brief description), comments for each variable, and commented blocks of code.
• Programs should be named as xminor4svr.c and minor4cli.c, for the server and client code, respectively.
• Your program will be graded based largely on whether it works correctly on the CSE machines (e.g., cse01, cse02, …, cse06), so you should make sure that your program compiles and runs on a CSE machine.
• Please pay attention to the SAMPLE OUTPUT for how this program is expected to work.
• This is an individual programming assignment that must be the sole work of the individual student. Any instance of academic dishonesty will result in a grade of “F” for the course, along with a report filed into the Academic Integrity Database.