freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

監(jiān)控ip數(shù)據(jù)包流量系統(tǒng)設(shè)計書-閱讀頁

2025-05-29 02:54本頁面
  

【正文】 _if_t* m_pAllDevs。 //文件流 用于保存記錄}。endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public: CAboutDlg()。 //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX)。CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){ //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX)。 m_strOutputFile = _T()。 //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()LoadIcon(IDR_MAINFRAME)。 m_iDevsCount = 0。 m_pCurSelDev = NULL。}void CIPPackCapDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX)。 DDX_Control(pDX, IDC_LIST_ALLDEVS, m_listboxAllDevs)。 DDX_Text(pDX, IDC_EDIT_OUTPUTFILE, m_strOutputFile)。 DDX_CBString(pDX, IDC_COMBO_FILTER, m_strFilter)。 // Add About... menu item to system menu. // IDM_ABOUTBOX must be in the system mand range. ASSERT((IDM_ABOUTBOX amp。 ASSERT(IDM_ABOUTBOX 0xF000)。 if (pSysMenu != NULL) { CString strAboutMenu。 if (!()) { pSysMenuAppendMenu(MF_SEPARATOR)。 } } // Set the icon for this dialog. The framework does this automatically // when the application39。 // Set big icon SetIcon(m_hIcon, FALSE)。 //初始化統(tǒng)計列表控件設(shè)置 InitStatisticsListCtrl()。 return TRUE。 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout。 } else { CDialog::OnSysCommand(nID, lParam)。 // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) (), 0)。 int cyIcon = GetSystemMetrics(SM_CYICON)。 GetClientRect(amp。 int x = (() cxIcon + 1) / 2。 // Draw the icon (x, y, m_hIcon)。 }}HCURSOR CIPPackCapDlg::OnQueryDragIcon(){ return (HCURSOR) m_hIcon。 if(pcap_findalldevs(amp。 strErr += szErrBuf。 return FALSE。 pDev。 ++m_iDevsCount。 return FALSE。}void CIPPackCapDlg::OnBtnStart() { //如果之前有監(jiān)聽記錄 詢問是否保存記錄到日志文件 //并且重置必要數(shù)據(jù)(統(tǒng)計鏈表) if (m_bHadListend) { AskSaveToFile()。 } UpdateData(TRUE)。 return。 return。 //設(shè)置監(jiān)聽過濾器 if (!SetListenFilter()) return。 if(StartListenning()) { //標記已經(jīng)監(jiān)聽過 m_bHadListend = TRUE。 } //更新輸出以及界面 UpdateOutput()。 //如果條目無效 提示用戶重新選擇 if (index0 || index=m_iDevsCount) { MessageBox(請選擇你要監(jiān)控的適配器)。 } //根據(jù)選擇的條目索引 得到用戶選擇的適配器的pcap_if_t結(jié)構(gòu)指針 int i=0。 i=index。 } //以混雜模式打開該適配器 得到該適配器的描述符 char szErrBuf[PCAP_ERRBUF_SIZE] = {0}。 strErr += szErrBuf。 } return TRUE。 if (m_pCurSelDevaddresses != NULL) { netmask = ((struct sockaddr_in*)(m_pCurSelDevaddressesnetmask))。 } struct bpf_program bpfCode。bpfCode, (5), 1, netmask)0) { MessageBox(編譯捕獲過濾器失敗!)。 } //設(shè)置過濾器 if (pcap_setfilter(m_fpSelDev, amp。 return FALSE。}/** 格式化輸出提示信息*/void CIPPackCapDlg::SetTipsInfo(LPCTSTR pszformat, ...){ va_list arglist。 char szTip[1024]。 va_end(arglist)。}/** 初始化統(tǒng)計報表設(shè)置*/void CIPPackCapDlg::InitStatisticsListCtrl(){ //添加列和列名 (0, 源IP地址)。 (2, 數(shù)據(jù)包數(shù)目)。 (amp。 (0, ()/2)。 (2, ()/4)。 //獲取開始時間 time_t begin_time。 ::time(amp。 m_startTime = begin_time。 struct pcap_pkthdr* ppktheader。 BOOL bNormalExit = FALSE。 while((ret = pcap_next_ex(m_fpSelDev, amp。ppkt_data)) = 0) { //計算并顯示剩余時間 ::time(amp。 left_time = m_uListenTime (now_timebegin_time)。 (%d秒, left_time)。 if (left_time = 0) { bNormalExit = TRUE。 } //超時 繼續(xù)進行下一次抓包 if(ret == 0) continue。 pheader = (IP_HEADER*)(ppkt_data+14)。 } return bNormalExit。 int nIndex = 0。 pNode。 (nIndex, inet_ntoa(*(in_addr*)amp。 //解析并顯示協(xié)議 CString strProto。 break。 break。 break。 break。 break。 break。 break。 break。 //顯示數(shù)量 CString strCount。 (nIndex, 2, strCount)。 } //恢復(fù)必要控件可用 EnableSomeWindow(TRUE)。}/** 在監(jiān)控期間 使開始按鈕和其他輸入控件不可用* (在單線程中 已形成死循環(huán) 因此用戶不可操作 僅更新按鈕不可用給用戶直觀顯示)*/void CIPPackCapDlg::EnableSomeWindow(BOOL bEnable){ ((CButton*)GetDlgItem(IDC_BTN_START))EnableWindow(bEnable)。 if (strFileExt != .txt amp。 strFileExt != .TXT) m_strOutputFile+=.txt。 (是否將輸出保存到你的日志文件: %s, m_strOutputFile)。 } }}/** 將得到的結(jié)果存入m_strOutputFile指定的文件*/void CIPPackCapDlg::SaveToFile(){ //打開指定文件 ((0), ios::out|ios::app)。 return。 CString strTime。 (%d%d%d %d:%d:%d, (), (), (), (), (), ())。 CTime startTime = CTime(m_startTime)。 //生成日志頭信息 m_filestream(0)\n。 m_filestream開始監(jiān)聽時間 : (0)39。 m_filestream監(jiān)聽時長 : m_uListenTime秒\n。\n39。 //從統(tǒng)計列表控件中獲取信息 并生成記錄 int count = ()。 } m_filestream源IP地址\t\t協(xié)議類型\t抓包數(shù)量endl。 for (index = 0。 index++) { char szIP[30] = {0}。 m_filestreamszIP\t\t。 (index, 1, proto, 10)。 char num[5] = {0}。 m_filestreamnumendl。 SetTipsInfo(保存日志成功!)。 CIPNode* pTemp。 pNode = pNodepNext。 } //頭尾指針置空 ()。}void CIPPackCapDlg::OnClose() { // TODO: Add your message handler code here and/or call default //詢問是否保存最后一次結(jié)果 if (m_bHadListend) { AskSaveToFile()。 CDialog::OnClose()??梢詫⒈O(jiān)控函數(shù)放入單獨的線程,這樣使得程序主界面不會在監(jiān)控時間內(nèi)陷入死循環(huán),可以繼續(xù)響應(yīng)用戶選擇,比如終止抓包。,而不能以秒為單位及時地看到網(wǎng)絡(luò)抓包統(tǒng)計結(jié)果。出于效率考慮,應(yīng)該將監(jiān)控放在單獨線程中,否則等界面繪制完成再接續(xù)抓包有可能會使得包丟失??勺鳛檎n后擴
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1