设为首页 加入收藏

TOP

1.4.2 具体编码(1)
2013-10-07 15:52:41 来源: 作者: 【 】 浏览:76
Tags:1.4.2 具体 编码

1.4.2  具体编码(1)

设计界面完毕后,开始步入正式编码阶段。

(1) 定义协议名称结构_PROTN2T,具体代码如下:

  1. typedef struct _PROTN2T  
  2. {   
  3. int  proto;  
  4. char *pprototext;  
  5. } PROTN2T;  

(2) 定义IP头结构_IPHEADER,具体代码如下:
  1. typedef struct _IPHEADER {  
  2. unsigned char  header_len:4;  
  3. unsigned char  version:4;     
  4. unsigned char  tos;    
  5. unsigned short total_len;    
  6. unsigned short ident;  
  7. unsigned short flags;     
  8. unsigned char  ttl;    
  9. unsigned char  proto;      
  10. unsigned short checksum;         
  11. unsigned int   sourceIP;  
  12. unsigned int   destIP;  
  13. } IPHEADER;  

(3) 定义TCP包头结构TCPPacketHead,具体代码如下:
  1. struct TCPPacketHead {  
  2. WORD SourPort;  
  3. WORD DestPort;  
  4. DWORD SeqNo;  
  5. DWORD AckNo;  
  6. BYTE HLen;  
  7. BYTE Flag;  
  8. WORD WndSize;  
  9. WORD ChkSum;  
  10. WORD UrgPtr;  
  11. };  

(4) 定义ICMP包头结构ICMPPacketHead,具体代码如下:
  1. struct ICMPPacketHead {  
  2. BYTE Type;  
  3. BYTE Code;  
  4. WORD ChkSum;  
  5. };  

(5) 定义UDP包头结构UDPPacketHead,具体代码如下:
  1. struct UDPPacketHead {  
  2. WORD SourPort;  
  3. WORD DestPort;  
  4. WORD Len;  
  5. WORD ChkSum;  
  6. };  

(6) 定义一个得到协议名称的数组aOfProto,具体代码如下:
  1. PROTN2T aOfProto[PROTO_NUM + 1] =   
  2. {    
  3. { IPPROTO_IP, "IP" },  
  4. { IPPROTO_ICMP, "ICMP" },    
  5. { IPPROTO_IGMP, "IGMP" },   
  6. { IPPROTO_GGP, "GGP" },    
  7. { IPPROTO_TCP, "TCP" },    
  8. { IPPROTO_PUP, "PUP" },    
  9. { IPPROTO_UDP, "UDP" },    
  10. { IPPROTO_IDP, "IDP" },    
  11. { IPPROTO_ND, "NP"  },    
  12. { IPPROTO_RAW, "RAW" },    
  13. { IPPROTO_MAX, "MAX" },  
  14. { NULL, "" }   
  15. };    
  16.  
  17. char* get_proto_name(unsigned char proto)  
  18. {  
  19. BOOL bFound = FALSE;  
  20. for(int i=0; i<PROTO_NUM; i++)  
  21. {  
  22. if(aOfProto[i].proto == proto)  
  23. {  
  24. bFound = TRUE;  
  25. break;  
  26. }     
  27. }  
  28. if(bFound)  
  29. return aOfProto[i].pprototext;  
  30. return aOfProto[PROTO_NUM].pprototext;  
  31. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.1 设计界面 下一篇1.4.2 具体编码(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)