python采集数据丢包_用python接收UDP包,丢包

博主在Python中使用UDP接收多播图像时遇到丢包问题,每秒丢失大量数据包。尝试了多处理、线程、增大接收缓冲区等方法,但效果不明显。在 Raspberry Pi 上情况类似。在代码示例中,生产者线程从socket接收数据,消费者线程处理并保存图像。编辑部分提到,通过调整代码,丢包率降低到约10%,并分享了改进后的代码片段。
摘要由CSDN通过智能技术生成

我在python中使用UDP时有很多数据包丢失。我知道如果我不想丢失数据包,我应该使用TCP,但是我没有(完全)控制发送方。在

它是一个使用UDP多播每秒发送15个图像的摄像头。在

下面是我写的代码。

它使用多处理来允许生产者和消费者函数并行工作。Producer函数捕获包,consumer函数处理它们并将图像写入.bmp文件。在

我已经编写了一个类PacketStream,它将包中的字节写入.bmp文件。在

当摄像机发送新图像时,首先发送一个包,第一个字节=0x01。这包含有关图像的信息。

然后发送612个数据包,第一个字节=0x02。这些包含来自映像的字节(508字节/包)。在

由于每秒发送15个图像,每秒发送约9000个数据包。尽管这种情况在每个图像中以更快的速度发生,大约为22包/毫秒

我可以使用tcpdump或wireshark完美地接收所有数据包。

但是使用下面的代码,包会丢失。

当然,我的Windows7电脑应该可以处理这个问题?我也在树莓皮3上使用它,或多或少有相同数量的数据包丢失。所以我认为这是代码的问题。在

我尝试过很多不同的方法,比如线程而不是多处理,管道而不是队列。在

我还尝试用sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 3000000)

无济于事。在

在python中这是可能的吗?在

提前谢谢你

^{pr2}$

编辑

谢谢你的建议。在

1)我已经尝试过threading+queue,也尝试了'.join()&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值