云服务器内容精选

  • 计算报文的水印值示例代码 计算水印信息结构如图1所示。 图1 计算水印信息结构图 水印数据结构定义如下代码所示 typedef struct { unsigned int userId; /* 用户标识ID */ unsigned int payload; /* 业务载荷 */ unsigned short destPort; /* 业务目的端口 */ unsigned short rsv; /* 保留字段,2字节填充 */ unsigned int destIp; /* 业务目的IP */ unsigned int key; /* 水印关键字 */ } UdpWatermarkInfo; 字节序需要使用网络序。 业务载荷不满4字节的,使用0进行填充。 计算CRC哈希值可以使用CPU硬件加速接口进行替换,以提升处理性能。 unsigned int UdpFloodWatermarkHashGet(unsigned int userId, unsigned int payload, unsigned short destPort, unsigned int destIp, unsigned int key) { UdpWatermarkInfo stWaterInfo; stWaterInfo.destIp = destIp; stWaterInfo.destPort = destPort; stWaterInfo.userId = userId; stWaterInfo.payload = payload; stWaterInfo.key = key; stWaterInfo.rsv = 0; return CRC32Hash(0, (UCHAR *)&stWaterInfo, sizeof(stWaterInfo)); }
  • 计算报文的水印值示例代码 计算水印信息结构如图1所示。 图1 计算水印信息结构图 水印数据结构定义如下代码所示 typedef struct { unsigned int userId; /* 用户标识ID */ unsigned int payload; /* 业务载荷 */ unsigned short destPort; /* 业务目的端口 */ unsigned short rsv; /* 保留字段,2字节填充 */ unsigned int destIp; /* 业务目的IP */ unsigned int key; /* 水印关键字 */} UdpWatermarkInfo; 字节序需要使用网络序。 业务载荷不满4字节的,使用0进行填充。 计算CRC哈希值可以使用CPU硬件加速接口进行替换,以提升处理性能。 unsigned int UdpFloodWatermarkHashGet(unsigned int userId, unsigned int payload, unsigned short destPort, unsigned int destIp, unsigned int key){ UdpWatermarkInfo stWaterInfo; stWaterInfo.destIp = destIp; stWaterInfo.destPort = destPort; stWaterInfo.userId = userId; stWaterInfo.payload = payload; stWaterInfo.key = key; stWaterInfo.rsv = 0; return CRC32Hash(0, (UCHAR *)&stWaterInfo, sizeof(stWaterInfo));}