diff --git a/UDP-reflector.py b/UDP-reflector.py new file mode 100644 index 0000000000000000000000000000000000000000..3ba029b84210213da922c6097d72c9b8b4562a68 --- /dev/null +++ b/UDP-reflector.py @@ -0,0 +1,43 @@ +import socket +import time +import sys + +#DEFINE INPUTS HERE +REFLECTOR_HOST = '::1' #IP ADDRESS TO LISTEN FOR INCOMMING PACKETS (v4 or v6) +REFLECTOR_PORT = 15005 #IP PORT TO LISTEN FOR INCOMMING PACKETS +REMOTE_PORT = 55555 #REMOTE PORT TO REFLECT PACKETS TO +REFLECT_SWITCH = 1 #REFLECTION ENABLED:1 (TWO-WAY DELAY), REFLECTION DISABLED:0 (ONE-WAY DELAY) +BUFFER = 4096 + +ADDR = (REFLECTOR_HOST, REFLECTOR_PORT) + +#DUMB CHECK OF IP ADDRESS VERSION +if ':' in REFLECTOR_HOST: + EchoServer = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) +else: + EchoServer = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + +#BINDING, PROCESSING AND WRITING TO CSV +try: + EchoServer.bind(ADDR) + print 'echo server started on port', ADDR +except Exception: + print '***ERROR: Port Binding Failed' + +while True: + data, addr = EchoServer.recvfrom(BUFFER) + addlst=addr[0],REMOTE_PORT + + if REFLECT_SWITCH == 1: + EchoServer.sendto('%s' % (data), addlst) + + splitdata = data.split(',') + timecount = splitdata[0].strip("('") + one_way_delay = (time.time() - float(timecount)) + packet_number = str(splitdata[1].strip("' '")) + packet_number = packet_number.lstrip('0') + + outfile = open("udp_oneway_results.csv", "a").write(str(time.ctime()+','+'received , '+ packet_number+' , '+str(one_way_delay)+'\n')) + print (time.ctime()+','+'received , '+ packet_number+' , '+str(one_way_delay)) + +EchoServer.close()