测量 python 套接字 recv() 在设置超时后接收 Ack 的实际阻塞时间



我在重新传输延迟计算中没有得到预期的结果。我在下面包含了 python 代码片段,

s.send(base64.b64encode(ciphertext))   
try:
s.settimeout(0.01)                                  
t = perf_counter()
print(s.recv(1024).decode('ascii'))  
t2 = perf_counter()                             
tt = round((t2-t)*1000,2)                   
print('Delay is:' ,tt)
except socket.timeout as e:                  
print(e)

从理论上讲,tt 必须为 <=10ms(+1ms 用于打印和解码(,否则 s.recv(( 必须抛出异常。但是在 debian 操作系统中获取值直到 25 毫秒。其他方法如 time((、process_time(( 也没有给出预期的结果。

提前感谢!!

您不是单独计时 recv,而是计时加上打印操作,这将需要一些时间。 尝试一下没有打印,看看是否有区别。

这不一定是问题所在,但首先尝试是合理的。