隐龙轩_TZC 隐龙轩_TZC
关注数: 1 粉丝数: 10 发帖数: 438 关注贴吧数: 3
关于解析IP数据包课程设计 好久没用vc++6.0了,现在有代码,不会运行,求高人帮我测试一下,哎 #include "stdafx.h" #include "winsock2.h" #include "ws2tcpip.h" #include "stdio.h" typedef struct _IP_HEADER { union { BYTE Version; BYTE HdrLen; }; BYTE ServiceType; WORD TotalLen; WORD ID; union { WORD Flags; WORD Fragoff; }; BYTE TimeToLive; BYTE Protocol; WORD HdrChksum; DWORD SrcAddr; DWORD DstAddr; BYTE Options; }IP_HEADER; void getVersion(BYTE b,BYTE & version) { version =b>>4; } void getIHL(BYTE b,BYTE & result) { result = (b & 0x0f) *4; } char * parseServiceType_getProcedence(BYTE b) { switch(b>>5) { case 7: return "Network Control"; break; case 6: return "Internet work Control"; break; case 5: return "CRITIC/ECP"; break; case 4: return "Flash Override"; break; case 3: return "Falsh"; break; case 2: return "Immediate"; break; case 1: return "Priority"; break; case 0: return "Routine"; break; default : return "Unknown" } } char * parseServiceType_getTOS(BYTE b) { b=(b>>1)&0x0f; switch(b) { case 0: return "Normal service"; break; case 1: return "Minimize monetary cost"; break; case 2: return "Maximize reliability"; break; case 4: return "Maximize throughput"; break; case 8: return "Minimize delay"; break; case 15: return "Maximize security"; break; default: return "Unknown"; } } void getFlags(WORD w,BYTE & DF, BYTE & MF) { DF=(w>>14)&0x01; MF=(w>>13)&0x01; } void getFragoff(WORD w,WORD & fragoff) { fragoff=w&0x1ffff; } char * getProtocol(BYTE Protocol) { switch (Protocol) { case 1: return "ICMP"; case 2: return "IGMP"; case 4: return "IP in IP "; case 6: return "TCP"; case 8: return "EGP"; case 17: return "UPD"; case 41: return "IPv6"; case 46: return "OSPF"; default: return "UNKNOWN";
1 下一页