zoukankan      html  css  js  c++  java
  • checksumUDP


    unsigned short checksumudp(PseudoHeader* pPseudoHeader, unsigned short* usBuf, unsigned int nSize)
    {
     unsigned long usChksum = 0;
     unsigned long nPseudoHeader = sizeof(PseudoHeader);
     unsigned short* usPsBuf = (unsigned short*)pPseudoHeader;
     while( nPseudoHeader > 1 )
     {
      usChksum += *usPsBuf++;
      nPseudoHeader -= sizeof(unsigned short);
     }
     while( nSize > 1 )
     {
      usChksum += *usBuf++;
      nSize -= sizeof(unsigned short);
     }
     if( nSize )
     {
      usChksum += *(unsigned char*)usBuf;
     }
     
     usChksum=(usChksum>>16)+(usChksum&0xFFFF);
     usChksum+=(usChksum>>16);
     return (unsigned short)(~usChksum);
    }

    伪首:

    struct PseudoHeader
    {
     DWORD dwSrcIP;
     DWORD dwDestIP;
     char  cReserved;
     char  cProtocol;
     WORD  wLength;
    };

    wLength为udp的长度不包括伪首

  • 相关阅读:
    基于easyUI实现权限管理系统(一)一—组织结构树图形
    基于jquery实现图片拖动和曲线拖放
    SOLID原则
    架构设计-C4
    中台战略
    DDD
    GraphQL
    kafka笔记
    maven
    GIT
  • 原文地址:https://www.cnblogs.com/ahuo/p/1497004.html
Copyright © 2011-2022 走看看