gpt4 book ai didi

c - ICMP 校验和不正确

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:53 24 4
gpt4 key购买 nike

我在 x64 机器上。以下是我计算 ICMP 校验和的方法:

unsigned short in_checksum(unsigned short *ptr, int n_bytes)
{
register long sum;
u_short odd_byte;
register u_short ret_checksum;

while (n_bytes > 1)
{
sum += *ptr++;
n_bytes -= 2;
}

if (n_bytes == 1)
{
odd_byte = 0;
*((u_char *) & odd_byte) = * (u_char *) ptr;
sum += odd_byte;
}

sum = (sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
ret_checksum = ~sum;

return ret_checksum;
}

当我通过 wireshark 嗅探发送的数据包时,我总是说每个 icmp 数据包的校验和不正确。这是怎么回事?

最佳答案

你忘了初始化

  register long sum;

到 0。将选项 -W 传递给 gcc 会告诉您。

...: In function 'in_checksum':...: warning: 'sum' may be used uninitialized in this function

关于c - ICMP 校验和不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23282743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com