RodYang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年8月21日

摘要: 在看C/C++的书或者试题时,有时会见到利用word或dword定义的变量,第一次看到的时候并不知其是什么,更不用说word或dword占几个字节了。幸好在VC安装文件夹下有相关的定义。如C:\Program Files\Microsoft Visual Studio\VC98\Include查看头文件WINDEF.H的定义:typedef unsigned longDWORD;typedef intBOOL;typedef unsigned charBYTE;typedef unsigned shortWORD;typedef floatFLOAT;typedef FLOAT*PFLOAT; 阅读全文
posted @ 2013-08-21 15:08 RodYang 阅读(1738) 评论(0) 推荐(0) 编辑

摘要: 下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用......以太帧头格式结构体,共14个字节: typedef struct ether_header { unsigned char ether_dhost[6];//目的MAC地址 unsigned char ether_shost[6];//源MAC地址 unsigned short ether_type;//协议类型 }ETHHEADER,*PETHHEADER;IPv4报头格式结构体,共20个字节:typede... 阅读全文
posted @ 2013-08-21 09:23 RodYang 阅读(1610) 评论(0) 推荐(0) 编辑

摘要: 解析IPV4报文和IPV6报文的checksum的算法:校验和(checksum)算法,简单的说就是16位累加的反码运算:计算函数如下:我们在计算时是主机字节序,计算的结果封装成IP包时是网络字节序,注意这两者之间的区别,我们在从IP包里读取要转化为主机字节序,往IP包里存入时要转化为网络字节序在存入。UINT32 Checksum(UINT32 cksum, VOID *pBuffer, UINT32 size){INT8 num = 0;UINT8 *p = (UINT8 *)pBuffer;if ((NULL == pBuffer) || (0 == size)){return cksu 阅读全文
posted @ 2013-08-21 08:50 RodYang 阅读(3499) 评论(0) 推荐(1) 编辑