使用延迟python通过udp接收消息



我正在努力了解udp消息是如何接收的。我有一个外部工具,可以每1秒通过udp发送数据,还有一个简单的python脚本,可以接收类似这样的数据。

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(ip,port)
while True:
data, addr = sock.recvfrom(num)

我可以接收数据,但如果我将代码更改为

while True:
data, addr = sock.recvfrom(num)
time.sleep(10)

我仍然收到和以前一样的信息,只是速度变慢了。我原以为在"time.sleep(10("期间发送的消息会丢失(据我所知,这将是大多数消息,如果不是全部的话(。是否有一个内部存储器来存储所有发送的消息,无论接收者是否正在接收这些消息?

Socket有一个缓冲区,它与python无关,而是与操作系统有关。

所以,是的,udp数据包只是放在那里,等待应用程序将它们从缓冲区读取到应用程序内存。

当然,这个缓冲区是有限的,所以如果你等待太久,缓冲区就会满,你就会开始丢失数据包。

最新更新