当前位置: 首页 > 编程笔记 >

C++计算ICMP头的校验和实例

呼延烈
2023-03-14
本文向大家介绍C++计算ICMP头的校验和实例,包括了C++计算ICMP头的校验和实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C++计算ICMP头的校验和的方法,分享给大家供大家参考。具体实现代码如下:

USHORT checksum(USHORT* buff, int nSize)  

{  

    unsigned long cksum=0;  

    //将数据以字为单位加到cksum  

    while (nSize > 1)  

    {  

        cksum += *buff++;  

        nSize -= sizeof(USHORT);  

    }  

  

    //如果为奇数, 将最后一个字扩展到双字,再累加  

    if (nSize)  

    {  

        cksum += *(UCHAR*)buff;  

    }  

    //将cksum的高16位与低16位相加,取反后得到校验和  

    cksum = (cksum>>16) + (cksum&&0xffff);  

    cksum += (cksum>>16);  

    return (USHORT)(~cksum);  

}

希望本文所述对大家的C++程序设计有所帮助。

 类似资料:
  • 我正在使用iTextSharp从PDF文件中读取文本。然而,有些时候我不能提取文本,因为PDF文件只包含图像。我每天下载同样的PDF文件,我想看看PDF是否被修改过。如果无法获得文本和修改日期,那么MD5校验和是判断文件是否已更改的最可靠方法吗? 如果是的话,一些代码示例将会很感激,因为我对密码学没有太多的经验。

  • 使用Java /Spring运行Liquibase以对抗Snowflake数据库。第一个部署工作正常,我让Liquibase创建数据库变更日志表和数据库变更日志锁定表。它们被创建、写入并创建数据库对象。 我第二次尝试运行它时,它将获得更改日志锁,但随后会在liquibase中长时间处于静止状态。util:xxxx的计算校验和。然后在5分钟后超时(由于其他配置设置)。如果我删除DatabaseCha

  • 我在执行一个为给定文件计算MD5和SHA1校验和的方法时遇到一个问题。我的方法如下所示: SHA1: MD5: 在执行其中一个方法时,我得到一个IOException:进程无法访问文件“(PATHTOFILE),因为另一个进程正在使用它。 这是一个持续存在的问题,我无法计算PC上任何文件的校验和。我以本地管理员身份登录,而VS以管理员身份打开。这对于我尝试过的任何目录都是持久的,例如:C:\tem

  • 问题内容: 我正在为大型视频文件创建MD5校验和。我当前正在使用代码: 但这会创建一个内存缓冲区,并且对于大型视频文件而言并不理想。Swift中是否有一种方法可以计算读取文件流的MD5校验和,从而使内存占用量最小? 问题答案: 您可以分块计算MD5校验和,例如在?中有没有一个MD5库不需要同时输入全部内容?。 这是使用Swift的可能实现(现已针对Swift 5更新) 需要自动释放池来释放所返回的

  • plz请参阅本页以查看Boost::CRC示例代码:http://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp

  • 为了避免多次重新计算一个项目的数据,我希望对这些项目使用已经计算好的crc。或以伪代码: 问题是combine_magic应该是什么。我使用boost crc库,但我没有在那里找到这样的功能。简单地使用xor是一个坏主意,因为我可能会完成一些指向偶数次的项--这将从等式中消除它们。Zlib似乎提供了这样的函数https://github.com/madler/Zlib/blob/master/cr