Question
Networking : struct.pack() and struct.unpack() python 3 I have a below code... Would any one help me to fix these section in my code for
Networking : struct.pack() and struct.unpack() python 3
I have a below code... Would any one help me to fix these section in my code for following requirement:
The ping message contains 2 4-byte integers and must be encoded in network-byte order as follows:
-
4-byte message type with an integer value of 1 or 2
-
Message type = 1 for a ping request (message from client to server)
-
Message type =2 for a ping response (message from server to client)
-
(by using the struct.pack() and struct.unpack() functions to encode integers into a sequence of bytes in network byte order)
================
UDPPinglerClient.py
import socket from socket import AF_INET, SOCK_DGRAM import time print 'Running'
serverName = '127.0.0.1' #server set as localhost clientSocket = socket.socket(AF_INET,SOCK_DGRAM) #create the socket clientSocket.settimeout(1) #sets the timeout at 1 sec sequence_number = 1 #variable to keep track of the sequence number rtt=[] # list to store the rtt values
while sequence_number<=10: start=time.time() #the current time message = ('PING %d %d' % (sequence_number, start)) #client message clientSocket.sendto(message,(serverName, 11046))#client sends a message to the server try: message, address = clientSocket.recvfrom(1024) #recieves message from server elapsed = (time.time()-start) # calculates the rtt rtt.append(elapsed) print message print 'Round Trip Time is:' + str(elapsed) + ' seconds' except socket.timeout: #if no reply within 1 second print message print 'Request timed out' sequence_number+=1 #incremented by 1 if sequence_number > 10: #closes the socket after 10 packets mean=sum(rtt, 0.0)/ len(rtt) print '' print 'Maximum RTT is:' + str(max(rtt)) + ' seconds' print 'Minimum RTT is:' + str(min(rtt)) + ' seconds' print 'Average RTT is:' + str(mean)+ ' seconds' print 'Packet loss rate is:' + str((10-len(rtt))*10)+ ' percent' clientSocket.close()
UDPPinglerServer.py
# UDPPingerServer.py # We will need the following module to generate randomized lost packets import random from socket import *
# Create a UDP socket # Notice the use of SOCK_DGRAM for UDP packets serverSocket = socket(AF_INET, SOCK_DGRAM) # Assign IP address and port number to socket serverSocket.bind(('', 11046))
while True: # Generate random number in the range of 0 to 10 rand=random.randint(0, 10) # Receive the client packet along with the address it is coming from message,address = serverSocket.recvfrom(1024) # Capitalize the message from the client message = message.upper() # If rand is less is than 4, we consider the packet lost and do not respond if rand < 4: continue # Otherwise, the server responds serverSocket.sendto(message, address)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started