symbian-qemu-0.9.1-12/python-2.6.1/Demo/sockets/throughput.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #! /usr/bin/env python
       
     2 
       
     3 # Test network throughput.
       
     4 #
       
     5 # Usage:
       
     6 # 1) on host_A: throughput -s [port]                    # start a server
       
     7 # 2) on host_B: throughput -c  count host_A [port]      # start a client
       
     8 #
       
     9 # The server will service multiple clients until it is killed.
       
    10 #
       
    11 # The client performs one transfer of count*BUFSIZE bytes and
       
    12 # measures the time it takes (roundtrip!).
       
    13 
       
    14 
       
    15 import sys, time
       
    16 from socket import *
       
    17 
       
    18 MY_PORT = 50000 + 42
       
    19 
       
    20 BUFSIZE = 1024
       
    21 
       
    22 
       
    23 def main():
       
    24     if len(sys.argv) < 2:
       
    25         usage()
       
    26     if sys.argv[1] == '-s':
       
    27         server()
       
    28     elif sys.argv[1] == '-c':
       
    29         client()
       
    30     else:
       
    31         usage()
       
    32 
       
    33 
       
    34 def usage():
       
    35     sys.stdout = sys.stderr
       
    36     print 'Usage:    (on host_A) throughput -s [port]'
       
    37     print 'and then: (on host_B) throughput -c count host_A [port]'
       
    38     sys.exit(2)
       
    39 
       
    40 
       
    41 def server():
       
    42     if len(sys.argv) > 2:
       
    43         port = eval(sys.argv[2])
       
    44     else:
       
    45         port = MY_PORT
       
    46     s = socket(AF_INET, SOCK_STREAM)
       
    47     s.bind(('', port))
       
    48     s.listen(1)
       
    49     print 'Server ready...'
       
    50     while 1:
       
    51         conn, (host, remoteport) = s.accept()
       
    52         while 1:
       
    53             data = conn.recv(BUFSIZE)
       
    54             if not data:
       
    55                 break
       
    56             del data
       
    57         conn.send('OK\n')
       
    58         conn.close()
       
    59         print 'Done with', host, 'port', remoteport
       
    60 
       
    61 
       
    62 def client():
       
    63     if len(sys.argv) < 4:
       
    64         usage()
       
    65     count = int(eval(sys.argv[2]))
       
    66     host = sys.argv[3]
       
    67     if len(sys.argv) > 4:
       
    68         port = eval(sys.argv[4])
       
    69     else:
       
    70         port = MY_PORT
       
    71     testdata = 'x' * (BUFSIZE-1) + '\n'
       
    72     t1 = time.time()
       
    73     s = socket(AF_INET, SOCK_STREAM)
       
    74     t2 = time.time()
       
    75     s.connect((host, port))
       
    76     t3 = time.time()
       
    77     i = 0
       
    78     while i < count:
       
    79         i = i+1
       
    80         s.send(testdata)
       
    81     s.shutdown(1) # Send EOF
       
    82     t4 = time.time()
       
    83     data = s.recv(BUFSIZE)
       
    84     t5 = time.time()
       
    85     print data
       
    86     print 'Raw timers:', t1, t2, t3, t4, t5
       
    87     print 'Intervals:', t2-t1, t3-t2, t4-t3, t5-t4
       
    88     print 'Total:', t5-t1
       
    89     print 'Throughput:', round((BUFSIZE*count*0.001) / (t5-t1), 3),
       
    90     print 'K/sec.'
       
    91 
       
    92 
       
    93 main()