我正在测试Python套接字。如果客户端不调用socket.recv()
,则需要花费更多时间。如果服务器不调用connetion.send(),它仍然可以。但是,如果客户端不调用socket.recv(),则延迟会大大增加。
对于两个版本的客户端,服务器均保持不变:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", 11000))
sock.listen(100)
print("listening...")
while True:
conn, addr = sock.accept()
try:
buf = conn.recv(5000)
conn.send("")
conn.close()
print(buf)
except Exception, e:
pass
客户端1
import socket,
times = 20000
t1 = time.time()
for i in range(times):
sock = socket.socket()
sock.connect(("", 11000))
sock.send("hello there")
sock.recv(10)
sock.close()
time.sleep(0.001)
t2 = time.time()
print("throughput", times/(t2 - t1))
client2,没有“ sock.recv(10)”
import socket, time
times = 20000
t1 = time.time()
for i in range(times):
sock = socket.socket()
sock.connect(("", 11000))
sock.send("hello there")
sock.close()
time.sleep(0.001)
t2 = time.time()
print("throughput", times/(t2 - t1))
client1的吞吐量约为600,而client2的吞吐量约为500。我尝试了很多次,结果是一样的。那为什么呢?