63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
#!/usr/bin/python
|
|
|
|
import os, socket, sys, time
|
|
|
|
host = ''
|
|
port = 2007
|
|
|
|
if len(sys.argv) > 1:
|
|
mps = float(sys.argv[1])
|
|
else:
|
|
mps = 1.0
|
|
bps = mps * 1000000
|
|
BUFSIZE = int(bps/10) # sleep 100ms at full speed
|
|
|
|
print "Mbytes/s =", mps
|
|
|
|
if len(sys.argv) > 3:
|
|
host = sys.argv[2]
|
|
port = int(sys.argv[3])
|
|
print "connecting to %s:%d" % (host, port)
|
|
else:
|
|
print "listening on port", port
|
|
|
|
if host:
|
|
client_socket = socket.create_connection((host, port))
|
|
print "connected to", client_socket.getpeername()
|
|
else:
|
|
listen_address = ("", port)
|
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
server_socket.bind(listen_address)
|
|
server_socket.listen(5)
|
|
|
|
(client_socket, client_address) = server_socket.accept()
|
|
print "got connection from", client_address
|
|
|
|
start = time.time()
|
|
total_size = 0
|
|
dot = bps
|
|
|
|
while True:
|
|
data = client_socket.recv(BUFSIZE)
|
|
if data:
|
|
size = len(data)
|
|
total_size += size
|
|
if total_size >= dot:
|
|
dot += bps
|
|
sys.stdout.write('.')
|
|
sys.stdout.flush()
|
|
time.sleep(size / bps)
|
|
else:
|
|
print "\ndisconnect"
|
|
client_socket.close()
|
|
break
|
|
|
|
end = time.time()
|
|
elapsed = end - start
|
|
print "elapsed seconds %.3f" % elapsed
|
|
print "total bytes", total_size
|
|
print "throughput bytes/s %.2f" % (total_size / elapsed)
|
|
print "throughput Mbytes/s %.3f" % (total_size / elapsed / 1000000)
|
|
|