📄 monitorgeneralpage.cpp
字号:
// MonitorGeneralPage.cpp : implementation file
//
#include "stdafx.h"
#include "monitor.h"
#include "MonitorGeneralPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMonitorGeneralPage property page
extern "C" __declspec(dllimport) int ReceiveAdapter(byte * buf,int len);
UINT Monitor( LPVOID pParam );
IMPLEMENT_DYNCREATE(CMonitorGeneralPage, CPropertyPage)
CMonitorGeneralPage::CMonitorGeneralPage() : CPropertyPage(CMonitorGeneralPage::IDD)
{
//{{AFX_DATA_INIT(CMonitorGeneralPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CMonitorGeneralPage::~CMonitorGeneralPage()
{
}
void CMonitorGeneralPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMonitorGeneralPage)
DDX_Control(pDX, IDC_LIST_GENERAL, m_GeneralList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMonitorGeneralPage, CPropertyPage)
//{{AFX_MSG_MAP(CMonitorGeneralPage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMonitorGeneralPage message handlers
BOOL CMonitorGeneralPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_Thread=NULL;
InitListHeader();
m_Thread=AfxBeginThread(Monitor,this);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMonitorGeneralPage::InitListHeader()
{
m_GeneralList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_GeneralList.InsertColumn(0,"协议",LVCFMT_CENTER,50);
m_GeneralList.InsertColumn(1,"源地址",LVCFMT_CENTER,110);
m_GeneralList.InsertColumn(2,"目标地址",LVCFMT_CENTER,110);
m_GeneralList.InsertColumn(3,"源端口",LVCFMT_CENTER,50);
m_GeneralList.InsertColumn(4,"目标端口",LVCFMT_CENTER,60);
m_GeneralList.InsertColumn(5,"数据报长度",LVCFMT_CENTER,80);
}
UINT Monitor( LPVOID pParam )
{
CMonitorGeneralPage * page=(CMonitorGeneralPage *)pParam;
byte buffer[65535];
char buf[16];
while(true)
{
memset(buffer,0,65535);
int len=ReceiveAdapter(buffer,65535);
if(len>0)//接收到数据
{
IP_HEADER * ip=(IP_HEADER *)buffer;
int iphdr_len=(ip->ver_len&15)*32/8;
TCP_HEADER * tcp=(TCP_HEADER *)(buffer+iphdr_len);
unsigned __int16 src_port=tcp->source_port[0]*0x100+tcp->source_port[1];//源端口
unsigned __int16 dest_port=tcp->dest_port[0]*0x100+tcp->dest_port[1];;//目标端口
switch(ip->protocol)
{
case PROTOCOL_ICMP:
page->m_GeneralList.InsertItem(0,"ICMP");
break;
case PROTOCOL_TCP:
page->m_GeneralList.InsertItem(0,"TCP");
break;
case PROTOCOL_UDP:
page->m_GeneralList.InsertItem(0,"UDP");
break;
default:
page->m_GeneralList.InsertItem(0,"其他协议");
break;
}
//源地址
memset(buf,0,16);
sprintf(buf,"%d.%d.%d.%d",ip->src_addr[0],ip->src_addr[1],ip->src_addr[2],ip->src_addr[3]);
page->m_GeneralList.SetItemText(0,1,buf);
//目标地址
memset(buf,0,16);
sprintf(buf,"%d.%d.%d.%d",ip->tar_addr[0],ip->tar_addr[1],ip->tar_addr[2],ip->tar_addr[3]);
page->m_GeneralList.SetItemText(0,2,buf);
//源端口
memset(buf,0,16);
sprintf(buf,"%d",src_port);
page->m_GeneralList.SetItemText(0,3,buf);
//目标端口
memset(buf,0,16);
sprintf(buf,"%d",dest_port);
page->m_GeneralList.SetItemText(0,4,buf);
//数据报长度
__int16 datalen=ip->length[0]*0x100+ip->length[1];
memset(buf,0,16);
sprintf(buf,"%d",datalen);
page->m_GeneralList.SetItemText(0,5,buf);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -