使用MQTT进行文件传输

4

我正在开发一款能够与远程服务器通信的C++应用程序,我希望使用MQTT,因为它可靠且易于实现。还需要进行文件传输,不知道是否可以使用MQTT完成。

如果可以,是否可以获取下载进度状态和下载速度?

我在谷歌上搜索了一下,似乎是可以实现的,但并没有得到非常清晰的答案。

感谢您。

1个回答

6

MQTT是一种消息传递系统,你可以在消息中包含任何想要的内容。

MQTT消息负载只是一组字节,使用它们来发送文件非常简单(假设文件大小不超过256mb,因为这是单个消息的最大大小)。

如果你想发送更大的文件,则需要实现一种将其分解成较小部分的方案,这可能包括文件名、部分数量、当前部分号以及总文件大小等信息。

有了这些信息,你就可以确定传输速率,但是由于一个符合单个消息大小的文件首先会完整到达客户端内存中,因此计算传输速度并不难。如果你真的需要计算传输速度,那么最好的方法是将文件分成更小的部分。


1
感谢hardillb的回答。通常我只需要发送不超过50MB的文件。我正在使用C++的paho MQTT库,但我不知道如何在发布时获取上传速度。 - Avenger
1
你无法得到直接答案,必须自己将文件分成几部分,并使用“on publish”回调函数来计算速率。 - hardillb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接