From c904911fe40e442c39d8b925c03e406b0a1ebef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= <henrik.tjader@gmail.com> Date: Sat, 31 Jan 2015 15:16:56 +0100 Subject: [PATCH] Added the UDP reflector --- UDP-reflector.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 UDP-reflector.py diff --git a/UDP-reflector.py b/UDP-reflector.py new file mode 100644 index 0000000..3ba029b --- /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() -- GitLab