⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packettreedata.cpp

📁 网络实验网络实验网络实验网络实验网络实验
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	case ICMP:
		m_DataTree.InsertItem(_T("协议:ICMP"),hIpItem,TVI_LAST);
		break;
	case TCP:
		m_DataTree.InsertItem(_T("协议:TCP"),hIpItem,TVI_LAST);		
		break;
	case EGP:
		m_DataTree.InsertItem(_T("协议:EGP"),hIpItem,TVI_LAST);
		break;
	case IGP:
		m_DataTree.InsertItem(_T("协议:IGP"),hIpItem,TVI_LAST);		
		break;
	case UDP:
		m_DataTree.InsertItem(_T("协议:UDP"),hIpItem,TVI_LAST);		
		break;
	default:
		{
			sprintf(buffer,"协议:%d (不支持)",ip->protocol);
			m_DataTree.InsertItem(_T("协议:UDP"),hIpItem,TVI_LAST);					
		}
		break;
	}
	//报头校验码
	memset(buffer,0,256);	
	sprintf(buffer,"报头校验码:0x%02x%02x",ip->crc_val[0],ip->crc_val[0]);
	m_DataTree.InsertItem(_T(buffer),hIpItem,TVI_LAST);	
	//发送端地址
	memset(buffer,0,256);	
	sprintf(buffer,"源地址:%d.%d.%d.%d",ip->src_addr[0],ip->src_addr[1],ip->src_addr[2],ip->src_addr[3]);
	m_DataTree.InsertItem(_T(buffer),hIpItem,TVI_LAST);	
	//接收端地址
	memset(buffer,0,256);	
	sprintf(buffer,"目标地址:%d.%d.%d.%d",ip->des_addr[0],ip->des_addr[1],ip->des_addr[2],ip->des_addr[3]);	
	m_DataTree.InsertItem(_T(buffer),hIpItem,TVI_LAST);	

	switch(ip->protocol)
	{
	case ICMP:	
		{
			int len=PROTOCOL_DEFINE::get_IP_HEADER_length(ip);
			PROTOCOL_DEFINE::ICMP_HEADER * icmp=(PROTOCOL_DEFINE::ICMP_HEADER *)((DWORD)ip+len);			
			//InsertICMPTree(icmp,hIpItem);		
		}
		break;
	case TCP:
		{
			int len=PROTOCOL_DEFINE::get_IP_HEADER_length(ip);
			PROTOCOL_DEFINE::TCP_HEADER * tcp=(PROTOCOL_DEFINE::TCP_HEADER *)((DWORD)ip+len);			
			//InsertTCPTree(tcp,hIpItem);		
		}
		break;
	case EGP:		
		break;
	case IGP:
		break;
	case UDP:
		{
			int len=PROTOCOL_DEFINE::get_IP_HEADER_length(ip);
			PROTOCOL_DEFINE::UDP_HEADER * udp=(PROTOCOL_DEFINE::UDP_HEADER *)((DWORD)ip+len);						
			//InsertUDPTree(udp,hIpItem);
		}
		break;
	default:		
		break;
	}
}
/*void CPacketTreeData::InsertICMPTree(PROTOCOL_DEFINE::ICMP_HEADER * icmp,HTREEITEM hItem)
{
	char buffer[256];
	HTREEITEM hICMPItem=m_DataTree.InsertItem(_T("ICMP"),hItem,TVI_LAST);
	//类型字段	
	memset(buffer,0,256);
	sprintf(buffer,"类型:%d",icmp->type);
	HTREEITEM hTypeItem=m_DataTree.InsertItem(_T(buffer),hICMPItem,TVI_LAST);
	
	switch(icmp->type)
	{
	case 0:
		m_DataTree.InsertItem(_T("对会应请求的响应"),hTypeItem,TVI_LAST);
		break;
	case 3:
		m_DataTree.InsertItem(_T("IP数据报到达不了接收端"),hTypeItem,TVI_LAST);
		break;
	case 4:
		m_DataTree.InsertItem(_T("抑制从发送端传来的数据"),hTypeItem,TVI_LAST);
		break;
	case 5:
		m_DataTree.InsertItem(_T("请求变更路径"),hTypeItem,TVI_LAST);
		break;
	case 8:
		m_DataTree.InsertItem(_T("响应请求"),hTypeItem,TVI_LAST);
		break;
	case 11:
		m_DataTree.InsertItem(_T("通知发送端TTL已为0"),hTypeItem,TVI_LAST);
		break;
	case 12:
		m_DataTree.InsertItem(_T("通知数据报形式等出错"),hTypeItem,TVI_LAST);
		break;
	case 13:
		m_DataTree.InsertItem(_T("要求对方送出时间信息"),hTypeItem,TVI_LAST);
		break;
	case 14:
		m_DataTree.InsertItem(_T("对要求时间戳的回应"),hTypeItem,TVI_LAST);
		break;
	case 15:
		m_DataTree.InsertItem(_T("由路邮器查询地址等信息"),hTypeItem,TVI_LAST);
		break;
	case 16:
		m_DataTree.InsertItem(_T("对查询信息的会应"),hTypeItem,TVI_LAST);
		break;
	case 17:
		m_DataTree.InsertItem(_T("地址掩码请求消息"),hTypeItem,TVI_LAST);
		break;
	case 18:
		m_DataTree.InsertItem(_T("地址掩码会应消息"),hTypeItem,TVI_LAST);
		break;
	default:
		m_DataTree.InsertItem(_T("未知类型值"),hTypeItem,TVI_LAST);		
		break;
	}
	//代码
	memset(buffer,0,256);
	sprintf(buffer,"代码:%d",icmp->code);
	m_DataTree.InsertItem(_T(buffer),hICMPItem,TVI_LAST);
	//校验码
	memset(buffer,0,256);
	sprintf(buffer,"校验码:0x%02x%02x",icmp->check_sum[0],icmp->check_sum[1]);
	m_DataTree.InsertItem(_T(buffer),hICMPItem,TVI_LAST);
}
void CPacketTreeData::InsertTCPTree(PROTOCOL_DEFINE::TCP_HEADER * tcp,HTREEITEM hItem)
{
	char buffer[256];
	HTREEITEM hTCPItem=m_DataTree.InsertItem(_T("TCP"),hItem,TVI_LAST);
	//发送端端口
	memset(buffer,0,256);
	sprintf(buffer,"发送端端口:%d",tcp->src_port[0]*0x100+tcp->src_port[1]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//接收端端口
	memset(buffer,0,256);
	sprintf(buffer,"接收端端口:%d",tcp->des_port[0]*0x100+tcp->des_port[1]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//顺序号
	memset(buffer,0,256);
	sprintf(buffer,"顺序号:0x%02x%02x%02x%02x",tcp->sequence_no[0],
		tcp->sequence_no[1],tcp->sequence_no[2],tcp->sequence_no[3]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//确认号
	memset(buffer,0,256);
	sprintf(buffer,"确认号:0x%02x%02x%02x%02x",tcp->ack_no[0],
		tcp->ack_no[1],tcp->ack_no[2],tcp->ack_no[3]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//报头长
	memset(buffer,0,256);
	sprintf(buffer,"报头长:%d字节",(tcp->offset_reser_con[0]>>4)*32/4);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//控制位
	memset(buffer,0,256);
	int control=tcp->offset_reser_con[1]&63;
	sprintf(buffer,"控制位:%d",control);
	HTREEITEM hCItem=m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	if(control&32)
		m_DataTree.InsertItem(_T("URG(紧急数据指针有效)"),hCItem,TVI_LAST);
	if(control&16)
		m_DataTree.InsertItem(_T("ACK(确认有效)"),hCItem,TVI_LAST);
	if(control&8)
		m_DataTree.InsertItem(_T("PSH(传输强制功能)"),hCItem,TVI_LAST);
	if(control&4)
		m_DataTree.InsertItem(_T("RTS(请求连接重新设置)"),hCItem,TVI_LAST);
	if(control&2)
		m_DataTree.InsertItem(_T("SYN(请求顺序号同步处理)"),hCItem,TVI_LAST);
	if(control&1)
		m_DataTree.InsertItem(_T("FIN(发送结束)"),hCItem,TVI_LAST);
	//窗口
	memset(buffer,0,256);	
	sprintf(buffer,"窗口:%d位",tcp->window[0]*0x100+tcp->window[1]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//校验码
	memset(buffer,0,256);	
	sprintf(buffer,"校验码:0x%02x%02x",tcp->checksum[0],tcp->checksum[1]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);
	//紧急数据指针
	memset(buffer,0,256);	
	sprintf(buffer,"紧急数据指针:0x%02x%02x",tcp->urgen_pointer[0],tcp->urgen_pointer[1]);
	m_DataTree.InsertItem(_T(buffer),hTCPItem,TVI_LAST);

}
void CPacketTreeData::InsertUDPTree(PROTOCOL_DEFINE::UDP_HEADER * udp,HTREEITEM hItem)
{
	char buffer[256];
	HTREEITEM hUDFItem=m_DataTree.InsertItem(_T("UDP"),hItem,TVI_LAST);
	//发送端端口
	memset(buffer,0,256);
	sprintf(buffer,"发送端端口:%d",udp->src_port[0]*0x100+udp->src_port[1]);
	m_DataTree.InsertItem(_T(buffer),hUDFItem,TVI_LAST);
	//接收端端口
	memset(buffer,0,256);
	sprintf(buffer,"接收端端口:%d",udp->des_port[0]*0x100+udp->des_port[1]);
	m_DataTree.InsertItem(_T(buffer),hUDFItem,TVI_LAST);
	//用户数据报长度
	memset(buffer,0,256);
	sprintf(buffer,"数据报长度:%d",udp->length[0]*0x100+udp->length[1]);
	m_DataTree.InsertItem(_T(buffer),hUDFItem,TVI_LAST);
	//校验码
	memset(buffer,0,256);
	sprintf(buffer,"校验码:0x%02x%02x",udp->check_sum[0],udp->check_sum[1]);
	m_DataTree.InsertItem(_T(buffer),hUDFItem,TVI_LAST);
	
}*/
BOOL CPacketTreeData::OnInitDialog()
{
	CPropertyPage::OnInitDialog();

	// TODO:  在此添加额外的初始化	
	m_DataDisplay.SetBPR(8);
	m_DataDisplay.SetAddressBase(0);
	m_DataDisplay.SetOptions(TRUE, TRUE, TRUE, FALSE);
	m_DataDisplay.SetAllowDeletes(FALSE);

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -