【发布时间】:2020-07-17 06:59:23
【问题描述】:
我正在尝试使用需要定期推送数据但有时互联网连接丢失的 Raspberry Pi 制作网关。有没有办法存储接收到的数据并在连接可用时推送它?
【问题讨论】:
我正在尝试使用需要定期推送数据但有时互联网连接丢失的 Raspberry Pi 制作网关。有没有办法存储接收到的数据并在连接可用时推送它?
【问题讨论】:
好消息是通过 TCP/IP 连接发送数据不是特定于块的,因此 socket.send ("Foo\n"); socket.send ("栏\n");等同于 socket.send ("Foo\nBar\n");
因此,您可以通过分配一块(例如 64K)并将数据附加到其中来避免零碎的内存分配。如果它填满了,您可以分配另一个并将两者链接在一起,或者将其刷新并注意您已经删除了数据 - 无论如何您都必须编写代码,因为最终您会用完空间。
因此,数据到达:将其放在缓冲区的末尾并尝试发送缓冲区的整个填充部分(新数据和任何已经存在的数据)。如果发送成功,清除缓冲区。
为了保持整洁,当您的 Internet 连接建立后,请在整个连接中刷新缓冲区的内容(如果有)。
【讨论】: