如果客户端不调用socket.recv(),则延迟会更长

时间:2019-09-10 09:40:26

标签: python sockets networking

我正在测试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。我尝试了很多次,结果是一样的。那为什么呢?

0 个答案:

没有答案