c - 如何在不将其值设置为零的情况下验证校验和

标签 c networking network-programming

我有一个数据包和一个校验和函数。在发送数据包之前,校验和字段为0。我计算校验和并将值添加到校验和字段。在接收端,当我使用相同的校验和函数时,我得到了不匹配,因为在发送端计算时,校验和最初为 0,但在接收端,校验和是一个不同的非零值。

在接收端解决这个问题,使校验和字段等于 0 并计算校验和,但这不是很优雅。

我一直在寻找解决方案,但无济于事。校验和功能是非常标准的功能,对我来说它是一个黑盒子。

我应该如何解决这个问题?

最佳答案

您不应在校验和计算中包含校验和数字。计算所有字节的校验和,不包括校验和字节。

通过在校验和计算中包括为保存校验和而保留的字节,您将消耗一些额外的 CPU 周期,但一无所获。

关于c - 如何在不将其值设置为零的情况下验证校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085228/

相关文章:

c - select 未检测到本地主机连接已关闭

c - 此代码不可移植或不安全

linux - dns 不能在嵌入式设备上工作?

iphone - iPhone SDK 上没有route.h

c - 数组元素被反向打印出来

c - **在指针中的意义-C语言

java - Android 设备收不到多播包

java - 如何使用 Square 的 Retrofit 网络库实现异步回调

sockets - 如何设计多节点应用网络层?

python - 如何同时处理 ipv4 和 ipv6 客户端请求