当通过套接字从Python向粒子光子发送字节时,是否需要校验和?

当通过套接字从Python向粒子光子发送字节时,是否需要校验和?,python,tcp,wifi,lan,particle-photon,Python,Tcp,Wifi,Lan,Particle Photon,我正在尝试编写与粒子光子微控制器通信的python服务器。当状态发生变化时,微控制器应发送更新,并接受服务器发出的运行校准或其他操作的命令 Python中有一些原始套接字的行为更低级(),但是,我目前没有使用这些套接字中的任何一个 在python服务器代码中,我将套接字作为SOCK_流打开: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 现在,我想确保我的包两端都完好无损地到达,并且正在考虑添加一个校验和。但是,TCP的包中已

我正在尝试编写与粒子光子微控制器通信的python服务器。当状态发生变化时,微控制器应发送更新,并接受服务器发出的运行校准或其他操作的命令

Python中有一些原始套接字的行为更低级(),但是,我目前没有使用这些套接字中的任何一个

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

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

考虑到我正在C风格的低级语言和Python之间进行通信,我应该使用原始套接字吗

所有通信均通过无线局域网进行

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

这取决于你需要什么样的保证。如果可比性对您来说足够,那么您不需要再添加一个。如果不是,您需要在应用程序和微控制器之间使用的协议中添加一些更强的校验和方法

考虑到我正在C风格的低级语言和Python之间进行通信,我应该使用原始套接字吗

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