微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过套接字从 Python 向 Particle Photon 发送字节时是否需要校验和?

如何解决通过套接字从 Python 向 Particle Photon 发送字节时是否需要校验和?

我正在尝试编写与 Particle Photon 微控制器通信的 python 服务器。微控制器应在状态改变时发送更新,并接受来自服务器的命令以运行校准或其他操作。

Python 中有一些原始套接字的行为更底层 (How Do I Use Raw Socket in Python?),但是,我目前没有使用其中之一。

在我的 python 服务器代码中,我将套接字作为 SOCK_STREAM 打开:

sock = socket.socket(socket.AF_INET,socket.soCK_STREAM)

现在,我想确保我的包裹在两端都完好无损,并且正在考虑添加校验和。但是,TCP 的包中已经有校验和,所以我还需要在我的协议中构建另一个校验和吗?

鉴于我在 C 风格的低级语言和 Python 之间进行通信,我应该使用 RAW_Sockets 吗?

所有通信都通过 Wifi 在 LAN 上进行。

解决方法

然而,TCP 的包中已经有一个校验和,所以我还需要在我的协议中构建另一个校验和吗?

取决于您需要什么样的保证。如果相对而言 weak guarantees of the TCP checksum 对您来说已经足够了,那么您不需要再添加一个。如果不是,您需要以某种方式向您在应用程序和微控制器之间使用的协议添加一些更强大的校验和方法。

鉴于我在 C 风格的低级语言和 Python 之间进行通信,我应该使用 RAW_Sockets 吗?

原始套接字不会在您的用例中增加任何价值,只会使一切变得更加复杂。如果在实际应用程序负载之外需要大量控制,则使用这些。但是这些不是添加一些更强校验和的正确方法 - 这应该在您的应用程序协议中完成,从而体现在数据有效负载中。即使没有原始套接字,也可以通过各种 setsockopt 实现有效载荷之外的一些控制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。