#CMPS 128 - Homework 2 #Josep Valls - 4/24/2008 #jvallsva - 1139975 #Time client import socket import struct import time,datetime import sys #Defaults, for testing purposes pip='127.0.0.1' pport=1235 preqs=8 pdelay=500 #Parameters read from the given arguments pip=sys.argv[1] pport=int(sys.argv[2]) preqs=int(sys.argv[3]) pdelay=int(sys.argv[4]) #Variable initialization askew=0.0 adelay=0.0 #Object initialization dgramSock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) dgramSock.settimeout(3) #Main program procedure for req in range(preqs): #Prepare and send the request to the server print 'Sending request:',req+1 tsent=time.clock() dgramSock.sendto(struct.pack('!I',0x1234deed),(pip,pport)) #Receive the response resp=[] try: resp=struct.unpack('!III',dgramSock.recv(12)) if resp[0]!=0xbeef5678: print 'magic number error',"%#x" % resp[0] else: #Time metrics stime=datetime.datetime.fromtimestamp(resp[1]) askew=askew+time.time()-resp[1]-resp[2]*0.000001 delay=time.clock()-tsent adelay=adelay+delay print 'Server time:',stime,resp[2],'lag:',delay except: print 'timeout' time.sleep(pdelay/1000.0) #Metrics and final math askew=askew/preqs adelay=adelay/preqs askew=askew+adelay print '\nClock skew:',askew,'Average lag:',adelay #Program termination dgramSock.close()