【发布时间】:2021-02-17 21:39:03
【问题描述】:
我们公司开发了在农田收集数据的站点。这些领域可能在偏僻的地方,因此电台使用带有 SIM 卡的 GSM/GPRS,会自动切换到最强的提供商。
每 5 分钟设置一次 Internet 连接以将数据发送到服务器。数据具有包长度、命令、传感器数据和CRC校验的结构。但是这些数据结构是通过 http post 发送到 url。
对于 480 字节的数据,大约使用 2550 字节的数据流量。 HTTP 协议有很多开销。因为我们只需要发送 480 字节的数据,所以我们有 80% 的开销通过 http 发送。现在我们有几百个站点,而且这个数字还在增长。因此,数据流量的成本正在迅速增加。
我们想要重新设计数据传输。数据由站内微芯片微处理器发送。
我们的目标是尽可能减少开销,同时保证数据交付。所以我研究了 TCP 和 UDP。
TCP 具有故障检测和恢复功能,但开销较高。 UDP 的开销较低,但不能保证数据传递时不会失败。
我的第一个想法是构建一个侦听 TCP 端口的服务器。站通过 TCP 发送数据。主要是因为有保证的数据交付。
使用 UDP,我们必须自己开发检查和重新发送数据,但我们记录的数据结构已经准备好进行检查。
所以我真的很怀疑该怎么做。我正在尝试回答这些问题:
-
TCP 和 UDP 发送(和传递)480 字节数据需要多少字节开销?
-
TCP 和 UDP 是发送 480 字节数据的最佳考虑方式,还是有更智能且开销更低的解决方案?
【问题讨论】:
-
实验和测试。如果您可以测量当前方法发送了多少数据,那么您应该能够测量使用 TCP 或 UDP 时的数据量。并记得在接收不良和有线连接不良的情况下进行测试,以检查在需要大量重新传输和重试时的情况。
-
是的,我们可以测量。 simcard 提供程序为我们提供了每个连接发送和接收的字节数的详细信息。所以我们必须首先对解决方案进行编程。我们现在选择 TCP。
标签: sockets tcp network-programming udp data-transfer