Menu

Need Help Assignment Please Programming Assignment 3 Udp Pinger Lab Lab Study Simple Inter Q43877015

I need help with this assignment, please;

Programming Assignment 3: UDP Pinger Lab

In this lab, you will study a simple Internet ping serverwritten in the Java language, and implement a corresponding client.The functionality provided by these programs is similar to thestandard ping programs available in modern operating systems,except that they use UDP rather than Internet Control MessageProtocol (ICMP) to communicate with each other. (Java does notprovide a straightforward means to interact with ICMP.)

The ping protocol allows a client machine to send a packet ofdata to a remote machine, and have the remote machine return thedata back to the client unchanged (an action referred to asechoing). Among other uses, the ping protocol allows hosts todetermine round-trip times to other machines.

You are given the complete code for the Ping server below. Yourjob is to write the Ping client.

Server Code

The following code fully implements a ping server. You need tocompile and run this code. You should study this code carefully, asit will help you write your Ping client.

import java.io.*; import java.net.*; import java.util.*;

/*
* Server to process ping requests over UDP. */

public class PingServer {

private static final double LOSS_RATE = 0.3;
private staticfinal int AVERAGE_DELAY = 100; // milliseconds

public static void main(String[] args) throws Exception { // Getcommand line argument. if (args.length != 1) {System.out.println(“Required arguments: port”);
return; }

int port = Integer.parseInt(args[0]);

// Create random number generator for use in simulating //packet loss and network delay.
Random random = new Random();

// Create a datagram socket for receiving and sending UDPpackets // through the port specified on the command line.DatagramSocket socket = new DatagramSocket(port);

// Processing loop. while (true) {

// Create a datagram packet to hold incomming UDP packet.DatagramPacket request = new DatagramPacket(new byte[1024],1024);

// Block until the host receives a UDP packet.socket.receive(request);

// Print the recieved data. printData(request);

// Decide whether to reply, or simulate packet loss. if(random.nextDouble() < LOSS_RATE) {

System.out.println(” Reply not sent.”);

continue; }

// Simulate network delay.
Thread.sleep((int)(random.nextDouble() * 2 * A VERAGE_DELA Y));

// Send reply.
InetAddress clientHost =request.getAddress();
int clientPort = request.getPort();
byte[]buf = request.getData();
DatagramPacket reply = newDatagramPacket(buf, buf.length, clientHost, clientPort);socket.send(reply);

System.out.println(” Reply sent.”); }

}

/*
* Print ping data to the standard output stream. */

private static void printData(DatagramPacket request) throwsException {

// Obtain references to the packet’s array of bytes. byte[] buf= request.getData();

// Wrap the bytes in a byte array input stream,
// so that youcan read the data as a stream of bytes. ByteArrayInputStream bais =new ByteArrayInputStream(buf);

// Wrap the byte array output stream in an input stream reader,// so you can read the data as a stream of characters.InputStreamReader isr = new InputStreamReader(bais);

// Wrap the input stream reader in a bufferred reader,
// so youcan read the character data a line at a time.
// (A line is asequence of chars terminated by any combination of r and n.)BufferedReader br = new BufferedReader(isr);

// The message data is contained in a single line, so read thisline. String line = br.readLine(); // Print host address and datareceived from it. System.out.println(

“Received from ” + request.getAddress().getHostAddress() + “: “+
new String(line) );

}}

The server sits in an infinite loop listening for incoming UDPpackets. When a packet comes in, the server simply sends theencapsulated data back to the client.

Packet Loss

UDP provides applications with an unreliable transport service,because messages may get lost in the network due to router queueoverflows or other reasons. In contrast, TCP provides applicationswith a reliable transport service and takes care of any lostpackets by retransmitting them until they are successfullyreceived. Applications using UDP for communication must thereforeimplement any reliability they need separately in the applicationlevel (each application can implement a different policy, accordingto its specific needs).

Because packet loss is rare or even non-existent in typicalcampus networks, the server in this lab injects artificial loss tosimulate the effects of network packet loss. The server has aparameter LOSS_RATE that determines which percentage of packetsshould be lost.

The server also has another parameter AVERAGE_DELAY that is usedto simulate transmission delay from sending a packet across theInternet. You should set AVERAGE_DELAY to a positive value whentesting your client and server on the same machine, or whenmachines are close by on the network. You can set AVERAGE_DELAY to0 to find out the true round trip times of your packets.

Compiling and Running Server

To compile the server, do the following:

javac PingServer.java

To run the server, do the following:

java PingServer port

where port is the port number the server listens on. Rememberthat you have to pick a port number greater than 1024, because onlyprocesses running with root (administrator) privilege

can bind to ports less than 1024.

Note: if you get a class not found error when running the abovecommand, then you may need to tell Java to look in the currentdirectory in order to resolve class references. In this case, thecommands will be as follows:

java -classpath . PingServer port

Your Job: The Client

You should write the client so that it sends 10 ping requests tothe server, separated by approximately one second. Each messagecontains a payload of data that includes the keyword PING, asequence number, and a timestamp. After sending each packet, theclient waits up to one second to receive a reply. If one secondsgoes by without a reply from the server, then the client assumesthat its packet or the server’s reply packet has been lost in thenetwork.

Hint: Cut and paste PingServer, rename the code PingClient, andthen modify the code.

You should write the client so that it starts with the followingcommand:

java PingClient host port

where host is the name of the computer the server is running onand port is the port number it is listening to. Note that you canrun the client and server either on different machines or on thesame machine.

The client should send 10 pings to the server. Because UDP is anunreliable protocol, some of the packets sent to the server may belost, or some of the packets sent from server to client may belost. For this reason, the client cannot wait indefinitely for areply to a ping message. You should have the client wait up to onesecond for a reply; if no reply is received, then the client shouldassume that the packet was lost during transmission across thenetwork. You will need to research the API for DatagramSocket tofind out how to set the timeout value on a datagram socket.

Your client will display the reply message from the server alongwith the RTT for each datagram received or a message indicatinglost packet for those not returned within the time limit.

When developing your code, you should run the ping server onyour machine, and test your

client by sending packets to localhost (or, 127.0.0.1). Afteryou have fully debugged your code, you should see how yourapplication communicates across the network with a ping server runby another member of the class.

Message Format

The ping messages in this lab are formatted in a simple way.Each message contains a sequence of characters terminated by acarriage return character (r) and a line feed character (n). Themessage contains the following string:

PING sequence_number time CRLF

where sequence_number starts at 0 and progresses to 9 for eachsuccessive ping message sent by the client, time is the time whenthe client sent the message, and CRLF represents the carriagereturn and line feed characters that terminate the line.

Expert Answer


Answer to I need help with this assignment, please; Programming Assignment 3: UDP Pinger Lab In this lab, you will study a simple …

OR