【发布时间】:2021-01-09 13:56:13
【问题描述】:
我有一个程序以 10Hz 的频率发送数据。
import socket
import time
if __name__ == '__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('127.0.0.1', 19080))
while True:
data = time.time()
sock.sendto(str(data).encode(), ('127.0.0.1', 9090))
time.sleep(0.1)
第二个程序接收数据,有延迟(1Hz):
import socket
import time
if __name__ == '__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('127.0.0.1', 9090))
while True:
data = time.time()
print(time.time(), sock.recv(100))
time.sleep(1)
过了一会儿,输出是:
1600859111.7595737 b'1600858988.4863389'
1600859112.760249 b'1600858988.5863452'
1600859113.760647 b'1600858988.6864707'
1600859114.761207 b'1600858988.7871313'
1600859115.761991 b'1600858988.8875835'
您可以看到接收数据的时间(右)和发送数据的时间(左)有很大差异。 为什么缓冲了这么多数据,我该如何摆脱它?我想要可能的最新帧,而不是缓冲帧。
【问题讨论】:
标签: python sockets udp buffering python-sockets