【发布时间】:2015-08-08 09:48:55
【问题描述】:
我可以通过 Arduino Mega 上的 WiFi 屏蔽 (ESP8266) 发送 GET 请求,并且我有一个 Snap-Webserver 正在运行,它为带有大 .txt 文件 (~ 1 MB) 的静态目录提供服务。
不幸的是,我无法用 Arduino 解析传入数据的速度与发送的速度一样快。我丢失了大约 50% 的传入数据。
是否有可能配置 Snap 以延迟输出数据流?如果我可以告诉 Snap 在 .txt 文件中的分隔符之后等待约 10 毫秒(例如,'\n'),那将是完美的。
【问题讨论】:
-
这听起来很奇怪。在标准设置中,HTTP 的底层传输层是 TCP,它确保了可靠的传输。引用the Wikipedia article“TCP 使用端到端的流量控制协议来避免发送方发送数据过快,TCP 接收方无法可靠地接收和处理数据。”
-
我也是这么认为的,但我看到的唯一一件事就是数据丢失,我只是知道为什么会出现这种情况。会不会是 WiFi shield 的驱动没有按照你描述的方式实现 TCP?
-
您可以重写 Arduino 代码以使用
Range:标头进行多次 GET 调用。 -
我在我的代码中发现了错误。不幸的是,它引发了另一个问题,一个可能的解决方案是限制 tcp 的片段大小。问题在于只有 2KB Ram 的 Arduino Mega - 但我得到的片段几乎总是在 4KB 之间。即使我有时可以保存传入的数据,如果我想搜索或拆分它,Arduino 也会停止一切。
标签: haskell streaming haskell-snap-framework