如果没有可用的互联网连接,则存储接收到的数据的有效方法,并在 Raspberry Pi 中使用 Python 连接可用时推送它

Efficient way to store received data if no internet connection available and push it when connection available in Raspberry Pi using Python

我正在尝试使用 Raspberry Pi 创建网关,它需要定期推送数据,但有时会丢失互联网连接。有没有办法存储接收到的数据并在连接可用时推送它?

好消息是通过 TCP/IP 连接发送数据不是特定于块的,因此 socket.send ("Foo\n"); socket.send ("Bar\n");等同于 socket.send ("Foo\nBar\n");

因此,您可以通过分配一个块(比如 64K)并将数据附加到其中来避免零碎的内存分配。如果它填满了,您可以分配另一个,然后 link 将两者放在一起,或者将其清除并注意您已经删除了数据 - 无论如何您都必须编写代码,因为最终您会 运行出自 space.

因此,数据到达:将其放在缓冲区的末尾并尝试发送缓冲区的整个填充部分(新数据和任何已经存在的数据)。如果发送成功,清除缓冲区。

为了保持整洁,当您建立 Internet 连接时,刷新整个连接的缓冲区(如果有)的内容。