ip数据包的捕获与解析代码

合集下载

ip数据包的捕获与解析代码

ip数据包的捕获与解析代码

ip数据包的捕获与解析代码//packcapturedlg.h:headerfile#defineipv4_wersion4#defineipv6_wersion6#defineic mp_packet1#defineigmp_packet2#definetcp_packet6#defineegp_packet8#defineudp_pa cket17#defineospf_packet89classcpackcapturedlg:publiccdialog{public://{{afx_data(cfindhostdlg)enum{ido=ido_packcapture_dialog};intm_count;cstringm_packet;//}}afx_dataprotected://{{afx_msg(cfindhostdlg)afx_msgvoidoncapture();//}}afx_msgprivate:typedefstructip_head//ip头部结构{union{unsignedcharversion;//版本(字节前四位)unsignedcharheadlen;//头部长度(字节后四位)};unsignedcharservicetype;//服务类型unsignedshorttotallen;//总长度unsignedshortidentifier;//标识符union{unsignedshortflags;//标志位(字前三位)unsignedshortfragoffset;//片偏移(字后13位)};unsignedchartimetolive;//存活周期unsignedcharprotocol;//协议unsignedshortheadchecksum;//头部校验和unsignedintsourceaddr;//源ip地址unsignedintdestinaddr;//目的ip地址}ip_head;typedefstructicmp_head//icmp头部结构{unsignedchartype;//类型unsignedcharcode;//代码unsignedshortheadchecksum;//头部校验和unsignedshortidentifior;//标识符unsignedshortsequence;//序号}icmp_head;};//packcapturedlg.cpp:implementationfile#include\#include\#include\#include\#include\#defineio_rcvall_wsaiow(ioc_vendor,1)voidcpackcapturedlg::oncapture(){wsadataw sadata;//创建与socket库存取if(wsastartup(makeword(2,2),&wsadata)!=0){messagebox(\初始化失利!\return;}socketsocket;//创建原始socketsocket=socket(af_inet,sock_raw,ipproto_ip);if(socket==invalid_socket){me ssagebox(\创建socket失败!\wsacleanup();return;}intrecvtime=5000;//设置socket 操作选项if(setsockopt(socket,sol_socket,so_rcvtimeo,(char*)&recvtime,sizeof(recvtime)) ==socket_error){messagebox(\设置socket选项失败!\closesocket(socket);wsacleanup();return;}charhostname[128];//获得本地主机名称if(gethostname(hostname,128)==socket_error){messagebox(\获得主机名失败!\closesocket(socket);wsacleanup();return;}hostent*phostent;//获得本地主机ip地址phostent=gethostbyname(hostnmae);if(phostent==null){messagebox(\获得主机地址失败!\closesocket(socket);wsacleanup();return;}sockaddr_inhostaddr;//定义socket地址结构memset(&hostaddr,0,sizeof(hostaddr));hostaddr.sin_family=af_inet;hostaddr.sin_ addr.s_addr=(*(in_addr*)phostent->h_addr).s_addr;intnbind;//绑定socket与网卡nbind=bind(socket,(psockaddr)&hostaddr,sizeof(hostaddr));if(nbind==socket_erro r){messagebox(\绑定socket失败!\closesocket(socket);wsacleanup();return;}dworddwvalue=1;//设置socket拒绝接受模式if(ioctlsocket(socket,io_rcvall,&dwvalue)==socket_error){messagebox(\设置socket接收器失利!\closesocket(socket);wsacleanup();return;}updatedata(true);m_packet=\版本总长度标志位片偏转协议源地址目的地址\\r\\n\for(inti=0;i>4)==ipv4_version)str.format(\if((iphead.version>>4)==ipv6_ version)str.format(\m_packet+=str;str.format(\m_packet+=str;str.format(\m=%u\m_packet+=str;str.format(\m_packet+=str;switch(iphead.protocol){caseicmp_packet:str.format(\break;caseigmp_packet:str.format(\break;casetcp_pa cket:str.format(\break;caseegp_packet:str.format(\break;caseudp_packet:str.for mat(\break;caseospf_packet:str.format(\break;};m_packet+=str;str.format(\m_pac ket+=str;str.format(\m_packet+=str;m_packet+=\}}updatedata(false);closesocket(socket);wsacleanup();//中止与socket库存取}。

wireshark捕获过滤指定ip地址数据包

wireshark捕获过滤指定ip地址数据包

wireshark捕获过滤指定ip地址数据包使⽤捕获过滤或显⽰过滤,wireshark可以仅捕获/显⽰经过指定ip的数据包,即某个ip收到或发出的所有数据包。

wireshark捕获/显⽰过滤使⽤⽅法见:“”显⽰过滤:wireshark过滤经过指定ip的数据包显⽰过滤可以完整的复现测试时的⽹络环境,但会产⽣较⼤的捕获⽂件和内存占⽤。

ip.addr ==192.168.1.1 //显⽰所有⽬标或源地址是192.168.1.1的数据包ip.dst==192.168.1.1 //显⽰⽬标地址是192.168.1.1的数据包ip.src ==192.168.1.1 //显⽰源地址是192.168.1.1的数据包eth.addr== 80:f6:2e:ce:3f:00 //根据MAC地址过滤,详见“”ip.src==192.168.0.0/16 //⽹络过滤,过滤⼀个⽹段捕获过滤:wireshark捕获经过指定ip的数据包捕捉过滤抓包前在capture option中设置,仅捕获符合条件的包,可以避免产⽣较⼤的捕获⽂件和内存占⽤,但不能完整的复现测试时的⽹络环境。

host 192.168.1.1 //抓取192.168.1.1 收到和发出的所有数据包src host 192.168.1.1 //源地址,192.168.1.1发出的所有数据包dst host 192.168.1.1 //⽬标地址,192.168.1.1收到的所有数据包src host hostname //根据主机名过滤ether host 80:05:09:03:E4:35 //根据MAC地址过滤net 192.168.1 //⽹络过滤,过滤整个⽹段src net 192.168dst net 192使⽤“⾮/且/或”建⽴组合过滤条件可以获得更精确的捕获⾮: ! or “not” (去掉双引号)且: && or “and”或: || or “or”wirershark过滤指定ip收发数据包⽰例:抓取所有⽬的地址是192.168.1.2 或192.168.1.3 端⼝是80 的TCP 数据(tcp port 80) and ((dst host 192.168.1.2) or (dst host192.168.1.3)) //捕获过滤tcp.port==80&&(ip.dst==192.168.1.2||ip.dst==192.168.1.3) //显⽰过滤抓取所有⽬标MAC 地址是80:05:09:03:E4:35 的ICMP 数据(icmp) and ((ether dst host 80:05:09:03:E4:35))icmp && eth.dst==80:05:09:03:E4:35抓取所有⽬的⽹络是192.168,但⽬的主机不是192.168.1.2 的TCP 数据(tcp) and ((dst net 192.168) and (not dst host 192.168.1.2))tcp&&ip.src==192.168.0.0/16&&!(ip.src==192.168.1.2)捕获主机192.168.1.1 和主机192.168.1.2 或192.168.1.3的通信host 192.168.1.1 and (192.168.1.2 or 192.168.1.3 )ip.addr==192.168.1.1&&(ip.addr==192.168.1.2||ip.addr==192.168.1.3)获取主机192.168.1.1除了和主机192.168.1.2之外所有主机通信的数据包host 192.168.1.1 and ! 192.168.1.2ip.addr==192.168.1.1&&!ip.addr==192.168.1.2获取主机192.168.1.1接收或发出的telnet包,telnet使⽤tcp 23端⼝tcp port 23 and host 192.168.1.1tcp.port==23&&ip.addr==192.168.1.1。

网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包

网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包

网络协议分析课程设计之协议编程实验一帧封装实验目的:•编写程序,根据给出的原始数据,组装一个IEEE 802.3格式的帧(题目)默认的输入文件为二进制原始数据(文件名分别为input1和input2))。

•要求程序为命令行程序。

比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile,其中,inputfile为原始数据文件,outputfile为输出结果。

•输出:对应input1和input2得结果分别为output1和output2。

试验要求:•编写程序,根据给出的原始数据,组装一个IEEE 802.3格式的帧(题目)默认的输入文件为二进制原始数据(文件名分别为input1和input2))。

•要求程序为命令行程序。

比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile,其中,inputfile为原始数据文件,outputfile为输出结果。

输出:对应input1和input2得结果分别为output1和output2验设计相关知识:帧:来源于串行线路上的通信。

其中,发送者在发送数据的前后各添加特殊的字符,使它们成为一个帧。

Ethernet从某种程度上可以被看作是机器之间的数据链路层连接。

按802.3标准的帧结构如下表所示(802.3标准的Ethernet帧结构由7部分组成)802.3标准的帧结构其中,帧数据字段的最小长度为46B 。

如果帧的LLC 数据少于46B ,则应将数据字段填充至46B 。

填充字符是任意的,不计入长度字段值中。

在校验字段中,使用的是CRC 校验。

校验的范围包括目的地址字段、源地址字段、长度字段、LLC 数据字段。

循环冗余编码(CRC)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。

CRC 校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。

网络层数据包抓包分析

网络层数据包抓包分析

网络层数据包抓包分析一.实验内容(1)使用Wireshark软件抓取指定IP包。

(2)对抓取的数据包按协议格式进行各字段含义的分析。

二.实验步骤(1)打开Wireshark软件,关闭已有的联网程序(防止抓取过多的包),开始抓包;(2)打开浏览器,输入/网页打开后停止抓包。

(3)如果抓到的数据包还是比较多,可以在Wireshark的过滤器(filter)中输入http,按“Apply”进行过滤。

过滤的结果就是和刚才打开的网页相关的数据包。

(4)在过滤的结果中选择第一个包括http get请求的帧,该帧用于向/网站服务器发出http get请求(5)选中该帧后,点开该帧首部封装明细区中Internet Protocol 前的”+”号,显示该帧所在的IP包的头部信息和数据区:(6)数据区目前以16进制表示,可以在数据区右键菜单中选择“Bits View”以2进制表示:(注意:数据区蓝色选中的数据是IP包的数据,其余数据是封装该IP包的其他层的数据)回答以下问题:1、该IP包的“版本”字段值为_0100_(2进制表示),该值代表该IP包的协议版本为:√IPv4□IPv62、该IP包的“报头长度”字段值为__01000101__(2进制表示),该值代表该IP包的报头长度为__20bytes__字节。

3、该IP包的“总长度”字段值为___00000000 11101110___ (2进制表示),该值代表该IP包的总长度为__238__字节,可以推断出该IP包的数据区长度为__218__字节。

4、该IP包的“生存周期”字段值为__01000000__ (2进制表示),该值代表该IP包最多还可以经过___64__个路由器5、该IP包的“协议”字段值为__00000110__ (2进制表示) ,该值代表该IP包的上层封装协议为__TCP__。

6、该IP包的“源IP地址”字段值为__11000000 1010100000101000 00110011__ (2进制表示) ,该值代表该IP包的源IP地址为_192_._168_._40_._51_。

计算机网络练习之使用WireShark捕获和分析数据包

计算机网络练习之使用WireShark捕获和分析数据包

以太帧和ARP包协议分析实验一、目的1、理解以太帧格式2、理解ARP协议格式和ARP 协议的工作原理二、实验类型验证类实验三、实验步骤一:运行wireshark开始捕获数据包,如图所示点击第二行的start开始捕获数据包。

启动界面:抓包界面的启动是按file下的按钮(或capture下的interfaces)之后会出现这个是网卡的显示,因为我有虚拟机所以会显示虚拟网卡,我们现在抓的是真实网卡上的包所以在以太网卡右边点击start 开始抓包。

(捕捉本地连接对应的网卡,可用ipconfig/all 查看)二:几分钟后就捕获到许多的数据包了,主界面如图所示:如上图所示,可看到很多捕获的数据。

第一列是捕获数据的编号;第二列是捕获数据的相对时间,从开始捕获算为0.000秒;第三列是源地址,第四列是目的地址;第五列是数据包的信息。

选中第一个数据帧,然后从整体上看看Wireshark的窗口,主要被分成三部分。

上面部分是所有数据帧的列表;中间部分是数据帧的描述信息;下面部分是帧里面的数据。

三:开始分析数据1.打开“命令提示符”窗口,使用“arp -a”命令查看本地计算机ARP高速缓存。

2.使用“arp -d”命令清除本地计算机ARP高速缓存,再使用“arp -a”命令查看。

此时,本地计算机ARP高速缓存为空。

3.在下图中Filter后面的编辑框中输入:arp(注意是小写),然后回车或者点击“Apply”按钮将计算机与数据设备相连(3928或路由器),参见静态路由配置。

3.此时,网络协议分析软件开始捕获数据,在“命令提示符”窗口中PING同一子网中的任意主机。

(计算机Aping计算机B)因为PING命令的参数为IP地址,因此使用PING命令前,需要使用ARP机制将IP地址转换为MAC地址,这个过程用户是无法感知的。

因为我们在使用PING命令前已经开始网络数据包捕获,因此,此时网络协议分析软件将捕获到ARP解析数据包。

wireshark抓包语句

wireshark抓包语句

wireshark抓包语句
Wireshark是一款功能强大的网络协议分析工具,可以捕获和分析网络数据包。

通过使用Wireshark抓包语句,可以获取网络通信中的各种信息,包括协议类型、源IP地址、目标IP地址、端口号等。

以下是一些使用Wireshark抓包语句的示例:
1. 抓取所有传输层协议为TCP的数据包:
`tcp`
2. 抓取源IP地址为192.168.1.1的数据包:
`ip.src == 192.168.1.1`
3. 抓取目标IP地址为192.168.1.1的数据包:
`ip.dst == 192.168.1.1`
4. 抓取源端口号为80的数据包:
`tcp.srcport == 80`
5. 抓取目标端口号为80的数据包:
`tcp.dstport == 80`
6. 抓取源IP地址为192.168.1.1且目标IP地址为192.168.1.2的数据包:
`ip.src == 192.168.1.1 && ip.dst == 192.168.1.2`
7. 抓取HTTP协议的数据包:
`http`
8. 抓取FTP协议的数据包:
`ftp`
9. 抓取所有传输层协议为UDP的数据包:
`udp`
10. 抓取包含特定关键词的数据包:
`contains "keyword"`
通过使用这些Wireshark抓包语句,可以根据实际需要捕获和分析特定的网络数据包,以便进行网络故障排除、网络安全分析等工作。

使用Wireshark抓包语句可以帮助我们更好地理解网络通信过程,并解决与网络相关的问题。

实验二IP报文的捕获与分析

实验二IP报文的捕获与分析

实验⼆IP报⽂的捕获与分析实验⼆ IP报⽂的捕获与分析——实验报告⼀、实验⽬的(1)掌握IP协议报⽂格式。

(2)对捕捉到的包进⾏IP分析。

⼆、实验内容⽤Wireshark过滤出IP数据包,查看并分析具体的IP包的内容。

三、实验原理1、wireshark简介Wireshark(前称Ethereal)是⼀个⽹络封包分析软件。

⽹络封包分析软件的功能是撷取⽹络封包,并尽可能显⽰出最为详细的⽹络封包资料。

在GNUGPL通⽤许可证的保障范围底下,使⽤者可以以免费的代价取得软件与其程式码,并拥有针对其源代码修改及客制化的权利。

Ethereal是⽬前全世界最⼴泛的⽹络封包分析软件之⼀。

Wireshark可以帮助⽹络管理员检测⽹络问题,帮助⽹络安全⼯程师检查资讯安全相关问题,开发者使⽤Wireshark来为新的通讯协议除错,普通使⽤者使⽤Wireshark来学习⽹络协定的相关知识当然,有的⼈⽤它来寻找⼀些敏感信息Wireshark不是⼊侵侦测软件(Intrusion DetectionSoftware,IDS)。

对于⽹络上的异常流量⾏为,Wireshark不会产⽣警⽰或是任何提⽰。

然⽽,仔细分析Wireshark撷取的封包能够帮助使⽤者对于⽹络⾏为有更清楚的了解。

Wireshark不会对⽹络封包产⽣内容的修改,它只会反映出⽬前流通的封包信息,它也不会送出封包⾄⽹络上2、IP数据报格式IP数据报TCP/IP协议定义了⼀个在因特⽹上传输的包,称为IP数据报(IP Datagram)。

这是⼀个与硬件⽆关的虚拟包,由⾸部和数据两部分组成。

⾸部的前⼀部分是固定长度,共20字节,是所有IP数据报必须具有的。

在⾸部的固定部分的后⾯是⼀些可选字段,其长度是可变的。

⾸部中的源地址和⽬的地址都是IP协议地址。

IP数据包格式如图1所⽰。

图1 IP报⽂格式上⽹查找资料,整理如下更详细更易懂的IP报⽂格式与字段含义:IP协议偏移量0~34~78~1516~1819~31偏移量0~34~78~1516~1819~31 0版本⾸部长度服务类型总长度32标识符标识分段偏移64存活时间协议⾸部校验和96源IP地址128⽬的IP地址160选项160或192+数据IP报⽂字段含义版本指 IP 协议所使⽤的版本。

网络数据传输管理技术的数据包捕获与分析(五)

网络数据传输管理技术的数据包捕获与分析(五)

网络数据传输管理技术的数据包捕获与分析随着网络技术的不断发展和普及,网络数据传输管理技术也变得日益重要。

在网络数据传输管理技术中,数据包的捕获与分析是至关重要的一环。

本文将探讨网络数据传输管理技术中数据包捕获与分析的相关内容。

一、数据包捕获数据包捕获是指通过某种方式,将经过网络传输的数据包进行截取和记录。

在网络数据传输管理技术中,数据包捕获可以通过网络抓包软件来实现。

网络抓包软件可以监控网络上的数据流量,实时捕获经过网络的数据包,并对其进行记录和分析。

网络抓包软件通常包括了一些高级的过滤功能,可以根据协议类型、源地址、目的地址、端口号等条件来进行数据包的过滤和捕获。

通过数据包捕获,管理员可以获取到网络上的实时数据流量信息,发现网络异常、故障和安全问题,进行网络性能分析和优化,以及进行网络安全审计和监控等工作。

二、数据包分析数据包分析是指对捕获到的数据包进行解析和分析,从中获取有价值的信息。

数据包分析可以帮助管理员了解网络上的通信情况、发现网络问题、排查安全隐患、进行性能优化等工作。

数据包分析通常包括了对数据包的解码、重组、协议分析、数据流重建、异常检测等内容。

网络数据包通常采用的是分层协议结构,如TCP/IP协议栈。

因此,在数据包分析过程中,需要对数据包进行相应协议的解析和分层重组,才能获取到更多有用的信息。

网络数据包分析工具通常提供了丰富的分析功能,如协议解析、数据流重建、流量统计、异常检测等。

通过这些功能,管理员可以对网络数据包进行深入分析,发现网络性能问题、排查网络安全问题、进行网络优化等工作。

三、数据包捕获与分析的重要性数据包捕获与分析在网络数据传输管理技术中具有重要的地位和作用。

首先,数据包捕获与分析可以帮助管理员了解网络上的通信情况,监控网络性能,发现网络异常和故障。

其次,数据包捕获与分析可以帮助管理员排查网络安全问题,进行网络安全审计和监控。

再次,数据包捕获与分析可以帮助管理员进行网络性能优化,提高网络的传输效率和稳定性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// PackCaptureDlg.h:header file#define IPV4_WERSION 4#define IPV6_WERSION 6#define ICMP_PACKET 1#define IGMP_PACKET 2#define TCP_PACKET 6#define EGP_PACKET 8#define UDP_packet 17#define OSPF_PACKET 89class CPackCaptureDlg:public CDialog{public://{{AFX_DATA(CFindHostDlg)enum {IDO=IDO_PACKCAPTURE_DIALOG};int m_Count;CString m_Packet;//}}AFX_DATAprotected://{{AFX_MSG(CFindHostDlg)afx_msg void OnCapture();//}}AFX_MSGprivate:typedef struct IP_HEAD//IP头部结构{union{unsigned char Version;//版本(字节前四位)unsigned char HeadLen;//头部长度(字节后四位)};unsigned char ServiceType;//服务类型unsigned short TotalLen;//总长度unsigned short Identifier;//标识符union{unsigned short Flags;//标志位(字前三位)unsigned short FragOffset;//片偏移(字后13位)};unsigned char TimeToLive;//生存周期unsigned char Protocol;//协议unsigned short HeadChecksum;//头部校验和unsigned int SourceAddr;//源IP地址unsigned int DestinAddr;//目的IP地址}ip_head;typedef struct ICMP_HEAD//ICMP头部结构{unsigned char Type;// 类型unsigned char Code;//代码unsigned short HeadChecksum;// 头部校验和unsigned short Identifior;//标识符unsigned short Sequence;//序号}icmp_head;};//PackCaptureDlg.cpp :implementation file#include "stdafx.h"#include "PackCaptureDlg.h"#include "PackCapture.h"#include "winsock2.h"#include "ws2tcpip.h"#pragma comment(lib,"ws2_32")#define IO_RCV ALL _WSAIOW(IOC_VENDOR,1)void CPackCaptureDlg::OnCapture(){WSADATA WSAData; //建立与Socket库绑定if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){MessageBox("WSAStartup初始化失败!");return;}SOCKET Socket; //创建原始SocketSocket=socket(AF_INET,SOCK_RAW,IPPROTO_IP);if(Socket==INV ALID_SOCKET){MessageBox("创建Socket失败!");WSACleanup();return;}int RecvTime=5000; //设置Socket操作选项if(setsockopt(Socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&RecvTime,sizeof(RecvTime))==SOCKET_ERROR){MessageBox("设置Socket选项失败!");closesocket(Socket);WSACleanup();return;}char HostName[128]; //获得本地主机名称if(gethostname(HostName,128)==SOCKET_ERROR){MessageBox("获得主机名失败!");closesocket(Socket);WSACleanup();return;}hostent* pHostent; //获得本地主机IP地址pHostent=gethostbyname(HostNmae);if(pHostent==NULL){MessageBox("获得主机地址失败!");closesocket(Socket);WSACleanup();return;}sockaddr_in HostAddr; //定义Socket地址结构memset(&HostAddr,0,sizeof(HostAddr));HostAddr.sin_family=AF_INET;HostAddr.sin_addr.s_addr=(*(in_addr*)pHostent->h_addr).s_addr;int nBind; //绑定Socket与网卡nBind=bind(Socket,(PSOCKADDR)&HostAddr,sizeof(HostAddr));if(nBind==SOCKET_ERROR){MessageBox("绑定Socket失败!");closesocket(Socket);WSACleanup();return;}DWORD dwValue=1; //设置Socket接受模式if(ioctlsocket(Socket,IO_RCV ALL,&dwValue)==SOCKET_ERROR){MessageBox("设置Socket接收器失败!");closesocket(Socket);WSACleanup();return;}UpdateData(true);m_Packet="版本总长度标志位片偏移协议源地址目的地址\r\n";for(int i=0;i<m_Count;i++){char RecvBuf[65535];memset(RecvBuf,0,sizeof(RecvBuf));int nRecv; //依次接受IP数据包nRecv=recv(Socket,RecvBuf,sizeof(RecvBuf),0);if(nRecv==SOCKET_ERROR){MessageBox("接受IP数据包失败!");closesocket(Socket);WSACleanup();return;}else{ip_head IpHead=*(ip_head*)RecvBuf;CString str;if((IpHead.V ersion>>4)==IPV4_VERSION)STR.Format("IPv4");if((IpHead.V ersion>>4)==IPV6_VERSION)STR.Format("IPv6");m_Packet+=str;str.Format("%u ",ntohs(IpHead.TotalLen));m_Packet+=str;str.Format("D=%uM=%u",((ntohs(IpHead.Flags))>>14)&0x01,((btohs(IpHead.Flags))>>13)&0x01);m_Packet+=str;str.Format("%u",ntohs(IpHead.Fragoffset)&0x1fff);m_Packet+=str;switch(IpHead.Protocol){case ICMP_PACKET:str.Format("ICMP");break;case IGMP_PACKET:str.Format("IGMP");break;case TCP_PACKET:str.Format("TCP");break;case EGP_PACKET:str.Format("EGP");break;case UDP_PACKET:str.Format("UDP");break;case OSPF_PACKET:str.Format("OSPF");break;};m_Packet+=str;str.Format("%s",inet_ntoa(*(in_addr*)&IpHead.SourceAddr));m_Packet+=str;str.Format("%s",inet_ntoa(*(in_addr*)&IpHead.DestinAddr));m_Packet+=str;m_Packet+="\r\n";}}UpdateData(false);closesocket(Socket);WSACLeanup(); //解除与Socket库绑定}。

相关文档
最新文档