home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Python 1.1 / Demo / sockets / throughput.py < prev    next >
Encoding:
Text File  |  1994-02-28  |  1.8 KB  |  68 lines  |  [TEXT/R*ch]

  1. server()
  2.     elif sys.argv[1] == '-c':
  3.         client()
  4.     else:
  5.         usage()
  6.  
  7.  
  8. def usage():
  9.     sys.stdout = sys.stderr
  10.     print 'Usage:    (on host_A) throughput -s [port]'
  11.     print 'and then: (on host_B) throughput -c count host_A [port]'
  12.     sys.exit(2)
  13.  
  14.  
  15. def server():
  16.     if len(sys.argv) > 2:
  17.         port = eval(sys.argv[2])
  18.     else:
  19.         port = MY_PORT
  20.     s = socket(AF_INET, SOCK_STREAM)
  21.     s.bind('', port)
  22.     s.listen(1)
  23.     print 'Server ready...'
  24.     while 1:
  25.         conn, (host, remoteport) = s.accept()
  26.         while 1:
  27.             data = conn.recv(BUFSIZE)
  28.             if not data:
  29.                 break
  30.             del data
  31.         conn.send('OK\n')
  32.         conn.close()
  33.         print 'Done with', host, 'port', remoteport
  34.  
  35.  
  36. def client():
  37.     if len(sys.argv) < 4:
  38.         usage()
  39.     count = int(eval(sys.argv[2]))
  40.     host = sys.argv[3]
  41.     if len(sys.argv) > 4:
  42.         port = eval(sys.argv[4])
  43.     else:
  44.         port = MY_PORT
  45.     testdata = 'x' * (BUFSIZE-1) + '\n'
  46.     t1 = time.time()
  47.     s = socket(AF_INET, SOCK_STREAM)
  48.     t2 = time.time()
  49.     s.connect(host, port)
  50.     t3 = time.time()
  51.     i = 0
  52.     while i < count:
  53.         i = i+1
  54.         s.send(testdata)
  55.     s.shutdown(1) # Send EOF
  56.     t4 = time.time()
  57.     data = s.recv(BUFSIZE)
  58.     t5 = time.time()
  59.     print data
  60.     print 'Raw timers:', t1, t2, t3, t4, t5
  61.     print 'Intervals:', t2-t1, t3-t2, t4-t3, t5-t4
  62.     print 'Total:', t5-t1
  63.     print 'Throughput:', round((BUFSIZE*count*0.001) / (t5-t1), 3),
  64.     print 'K/sec.'
  65.  
  66.  
  67. main()
  68.