Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

PROGRAM DESCRIPTION: In this assignment, you will write two complete C LANGUAGE programs to support a client/server model using Linux sockets for a UDP ping

PROGRAM DESCRIPTION: In this assignment, you will write two complete C LANGUAGE programs to support a client/server model using Linux sockets for a UDP ping utility.

Server o The server program will be called with one command-line argument, the port number being used, such as ./pingsvr 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. o 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. Your server should be able to support multiple clients at the same time (though no extra work is expected to support this requirement). o 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, including UNTs, the server in this project 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. o When a PING message comes in from a client 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. o The server will remain always on until a user enters Ctrl-C (^C) to send an interrupt signal to the program to terminate.

Client o The client program will be called with two command-line arguments, the hostname of the server and the port number being used, such as ./pingclicse06 8001. If the user calls the client program with too few or too many arguments, you will print out a usage statement and terminate the program. o The client will send 10 automated PING messages to the server using a UDP socket, where automated means the message is built in the code, not entered from the keyboard. Because UDP is an unreliable protocol, a packet sent from the client to the server may be lost in the network, or vice versa. For this reason, the client cannot wait indefinitely for a reply to a PING message. You should get the client to wait up to one second for a reply if no reply is received within one second, your client program should assume that the packet was lost during transmission across the network. o Specifically, for each of the 10 PING messages, your client program should: send the PING message using the UDP socket and print a status message; if the response message is received from the server, calculate and print the round trip time (RTT) in milliseconds for each message; otherwise, print a status message that it timed out. o After all of the PING messages have been sent (and responses received or timed out), the client program should report the following and then terminate: the number of messages sent, the number of messages received, and the message loss rate (as a percentage); the minimum, maximum, and average RTTs for all of the PING messages in milliseconds.

Your program should run on the INET domain using SOCK_DGRAM (i.e., UDP) sockets so that the server and the client execute on a different CSE machine. Given the randomness of what messages get dropped, it could be that less than or greater than 30% of the messages are dropped. Notice, however, in the SAMPLE OUTPUT that the server did indeed receive 10 PING messages, but dropped a few of the messages through our Packet Loss simulation. You will also need to make sure you are able to handle any error cases.

SAMPLE OUTPUT (user input shown in bold): ==> SERVER on cse06 $ ./pingsvr usage: ./pingsvr $ ./pingsvr 8001 [server]: ready to accept data... [client]: PING [server]: dropped packet [client]: PING [client]: PING [server]: dropped packet [client]: PING [client]: PING [client]: PING [client]: PING [server]: dropped packet [client]: PING [client]: PING [server]: dropped packet [client]: PING ^C ==> CLIENT on cse05 $ ./pingcli usage : ./pingcli $ ./pingcli cse06 usage : ./pingcli $ ./pingcli cse06 8001 1: Sent... Timed Out 2: Sent... RTT=0.650000 ms 3: Sent... Timed Out 4: Sent... RTT=0.359000 ms 5: Sent... RTT=0.213000 ms 6: Sent... RTT=0.191000 ms 7: Sent... Timed Out 8: Sent... RTT=0.346000 ms 9: Sent... Timed Out 10: Sent... RTT=0.368000 ms

10 pkts xmited, 6 pkts rcvd, 40% pkt loss min: 0.191000 ms, max: 0.650000 ms, avg: 0.246167 ms

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

Step: 3

blur-text-image

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

Big Data Concepts, Theories, And Applications

Authors: Shui Yu, Song Guo

1st Edition

3319277634, 9783319277639

More Books

Students also viewed these Databases questions

Question

Define Management or What is Management?

Answered: 1 week ago

Question

What do you understand by MBO?

Answered: 1 week ago

Question

What is meant by planning or define planning?

Answered: 1 week ago