ENTS 640 Networksand Protocolsi Project FALL 2016: Alekhya Dixit, Pulavarthy UID:115033085 Apeksha Chauhan UID: 115035027
ENTS 640 Networksand Protocolsi Project FALL 2016: Alekhya Dixit, Pulavarthy UID:115033085 Apeksha Chauhan UID: 115035027
NETWORKSAND PROTOCOLSI
PROJECT
FALL 2016
PROBLEM DEFINITION
Client Program Objectives:
1. To select a random measurement ID from the list of data given in the data.txt file.
2. To generate a random 16-bit unsigned digit which is to be used as a request IDfor an
assembled request message being sent from client to server.
3. The request message needs to be converted into bytes for transmission through UDP
sockets.
4. To integrate a timer function that waits for the response message of the server with
respect to the request message sent (append checksum value) and implements
appropriate error messages and timeout operations.
5. To carry out integrity check operation that calculates checksum for the response
message received from the server and compares it with the actual checksum value
integrated in the response message.
If no errors, then the program should print the corresponding temperature value
received from the server.
If errors are detected, the client should respond by printing the appropriate error
message. (Response code)
6. The client keeps running i.e., does the complete request/response sequence until the
application is terminated.
No
YES
UML DIAGRAMS
The Client and Server application programs various objectives have been realized by
defining different methods in their classes. This practice aided in integrating various
functions of these applications effectively and efficiently.
CLIENT AND SERVER APPLICATION DESIGN AND ANALYSIS
Client Objectives Analysis:
1. Main Function: call processNewRequest :
calls the function “readRandomRequestIDfromSource”- i.e, to read a request_ID
calls processrequest with measurementID as parameter.
o (a) Function: processRequest
Generate random requestID
Assemble the request message(without including integrity check)
Using StringBuilder to add checksum value to the assembled request message.
Ignoring the spaces by replacing with “null” = requestMessage
o Send requestMessage to the server
2. Function: readRandomRequestIDfromSource
Using Buffer Reader and Arraylist properties: read and split the line to extract measurementIDs
(store measurement IDs in an array List)
Use random function to choose one of the measurementIDs.
Select a random measurement ID from the array list(limited by its size) using random function
and store as String
Convert measurementID from String to Integer and ID return it.
4. Function: assembleRequestMessage
Assembling the request messsage using String Builder and using the variables requestID and
mesaurement ID .
Return request message(will not have checksum yet)
5. Function: sendRequest
Convert request message appended with checkSum to bytes
Initialise InetAddress and assign a port number to send the request message to the server
Start Timer and wait for response message from server
o Set initial timeout to 1000ms(1s)
o And initialise a retry counter to 1 (retry 3 times if the first time fails. And print
according timeout messages)
o Double the timeout interval after every failed attempt
o After 4th attempt transmitter i.e the source should declare communication failure and
print an error message when there is no response rom server.
Initialise required variables to receive the response of the server. Store in “responseBytes”.
Close Socket.
6. Function: processResponseBytes – This function is to evaluate the integrity check for the response
message , and compare it with the value supplied in the response message. If not equal it should start
again from creating a random requestID.
Store the responseMessage in a String.
Calculate the integrity check value for the response message by passing the string through the
integrityCheck function.
(a) Create a function : getResponseIntegrityValue
o Extract the checksum value from integrity response
If expected and actual checkSum values are not equal, call “processRequest” for
retransmission
(b) Create a function: getResponseCode
o Extract the response code
(c) Create function: getMeasurementValue : Extract the measurement Value
Check the value of the response code and print appropriate message
If response code is not equal to zero, then print a message indicating the particular error and
then ask the user if he/she would like to resend the request if needed.
o Initialise userChoice variable. Read user Input with Scanner function and respond
accordingly.
o For a responseCode of zero, the method passes the measurement value/ temperature
value retrieved from the method temperatureValueCompute.
Method: temperaturevalueCompute : For responseCode = 0 the method
passes the measurement value retrieved from the request
totemperatureValueCompute(measurementValueInt)function which returns
the value corresponding to the measurement id.
For any other code value generates a response with the responseCode value only.
False
True
False
True
True
False
False
True
OUTPUT:
The outputs for various cases are as given below: