forked from chenshuo/muduo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathslowsink.py
executable file
·62 lines (51 loc) · 1.36 KB
/
slowsink.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/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)