Advertisement
audreych

Untitled

Oct 6th, 2022
723
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.73 KB | None | 0 0
  1. import time
  2. from socket import *
  3.  
  4. HOST = '127.0.0.1'
  5. PORT = 55555
  6. serverAddress = (HOST, PORT)
  7.  
  8. def createUDPSocket():
  9.     # Create a UDP socket
  10.     # Notice the use of SOCK_DGRAM for UDP packets
  11.     clientSocket = socket(AF_INET, SOCK_DGRAM)
  12.     # connect the client socket to IP address and port number to used by the server socket
  13.     clientSocket.connect(serverAddress)
  14.  
  15.     # set timeout to 1s
  16.     clientSocket.settimeout(1)
  17.     return clientSocket
  18.  
  19. def sendUDPPacket(clientSocket):
  20.     amountOfPacketLoss = 0
  21.     averageRTT = 0
  22.     # send a test message
  23.     for i in range(10):
  24.         # the packet is first sent
  25.         sendTime = time.time()
  26.         stringToSend = 'Ping ' + str(i + 1) + ' '
  27.         encodedString = stringToSend.encode('utf-8')
  28.         clientSocket.sendto(encodedString, serverAddress)
  29.         try:
  30.             # receive the echoed message and address from server
  31.             echoedMessage, addr = clientSocket.recvfrom(1024)
  32.         except timeout:
  33.             print('Request Timed Out')
  34.             amountOfPacketLoss += 1
  35.             continue
  36.  
  37.         # the packet gets received
  38.         recvTime = time.time()
  39.  
  40.         if (echoedMessage != ''):
  41.             rtt = recvTime - sendTime
  42.             # print the echoed message with the rtt
  43.             print(echoedMessage.decode('utf-8') + f'{rtt * 1000:.3f}')
  44.             averageRTT += rtt
  45.  
  46.     # calculate average RTT and packet loss rate
  47.     averageRTT /= (10 - amountOfPacketLoss)
  48.     packetLossRate = amountOfPacketLoss / 10
  49.  
  50.     print('Result:')
  51.     print(f'Average RTT {averageRTT * 1000}')
  52.     print(f'Packet loss rate {packetLossRate}')
  53.  
  54. if __name__ == '__main__':
  55.     clientSocket = createUDPSocket()
  56.     sendUDPPacket(clientSocket)
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement