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

正文內(nèi)容

簡易windows防火墻的設(shè)計與實現(xiàn)—計算機(jī)畢業(yè)設(shè)計(編輯修改稿)

2025-01-08 16:03 本頁面
 

【文章內(nèi)容簡介】 規(guī)則的文件。 安裝卸載功能摸塊 防火墻要過濾數(shù)據(jù)包,就需要將 IP 過濾驅(qū)動按照定義的規(guī)則進(jìn)行過濾。用戶通過添加規(guī)則將規(guī)則存儲于防火墻 的存儲功能模塊中,想要將規(guī)則發(fā)送給 IP過濾驅(qū)動,就需要對該規(guī)則進(jìn)行安裝。安裝和卸載的功能就是將過濾規(guī)則傳送給IP 過濾驅(qū)動或是將已安裝的規(guī)則從過濾驅(qū)動中刪除。 IP 封包過濾驅(qū)動功能模塊 該功能模塊是整個包過濾防火墻的核心部分, IP 封包過濾驅(qū)動能按照用戶定義的規(guī)則對數(shù)據(jù)包做出阻止或是放行的選擇。 5 防火墻設(shè)計 程序關(guān)鍵類 應(yīng)用程序類 CFireWallAPP 每個 MFC 應(yīng)用程序都必須包括一個從 CWinApp 派生的應(yīng)用程序類,在本程序中的應(yīng)用程序類就是 CFireWAllApp。應(yīng)用程序類構(gòu)成了應(yīng)用程序的主執(zhí)行線程,它 封裝了一個 Windows 應(yīng)用程序的初始化、運行和終止。 主框架類 CMainFrame 主框架類 CMainFrame 構(gòu)成整個程序的框架,包括菜單、工具、按鈕等。它構(gòu)成了程序功能的主框架。下面列出了 CmainFrame 類中的主要方法和變量。 class CMainFrame:public CFrameWnd { 第 6 頁 共 21 頁 protected: BOOL Installed。//規(guī)則安裝標(biāo)志 TRUE已安裝, FALSE未安裝 protected: BOOL started。//開始過濾的標(biāo)志, TRUE已開始, FALSE未開始 TDriver filterDriver。//定義一個 TDriver 類的變量, TDriver ipFltDrv。// protected: BOOL AddFilterToFw()。//AddFilterToFw 完成將過濾鉤子安裝到防火墻的功能。 //{{AFX_MSG(CMainFrame) afx_msg void OnAppExit()。//退出程序 afx_msg void OnButtonadd()。//添加規(guī)則按鈕 afx_msg void OnButtondel()。//刪除規(guī)則按鈕 afx_msg void OnButtonstart()。//開始過濾按鈕 afx_msg void OnButtonstop()。//停止過濾按鈕 afx_msg void OnButtonInstall()。//安裝規(guī)則 afx_msg void OnButtonuninstall()。//卸載規(guī)則 afx_msg void OnMenuAddRule()。//添加規(guī)則菜單 afx_msg void OnMenuDelRule()。//刪除規(guī)則菜單 afx_msg void OnMenuInstallRules()。安裝菜單 afx_msg void OnMenuUninstallRules()。//卸載規(guī)則菜單 afx_msg void OnMenuStart()。//開始過濾菜單 afx_msg void OnMenuStop()。//停止過濾菜單 afx_msg void OnMenuSaveRules()。//保存規(guī)則菜單 afx_msg void OnMenuLoadRules()。//加載規(guī)則菜單 //}}AFX_MSG }。 在主框架類 CMainFrame 中定義了應(yīng)用程序的所有基本功能。 文檔類 CFireWallDoc MFC 程序中的文檔類是用來存儲數(shù)據(jù)變量的。在本程序中 CFireWallDoc 主要用來存儲用戶添加的規(guī)則,當(dāng)用戶添加規(guī)則或刪除規(guī)則時,就要向文檔類CFireWallDoc 中寫入數(shù)據(jù);當(dāng)視圖類 CFireWallView 需要將用戶添加的規(guī)則顯示在規(guī)則列表時,或者將規(guī)則安裝到驅(qū)動,就需要從文檔類 CFireWallDoc 中讀取數(shù)據(jù)。 第 7 頁 共 21 頁 class CFireWallDoc:public CDocument { public: unsigned int nRules。//規(guī)則序數(shù) RuleInfo rules[MAX_RULES]。//最大規(guī)則數(shù) int AddRule()。//添加規(guī)則 void DeleteRule(unsigned int position)。//刪除規(guī)則 void ResetRules()。//重置規(guī)則,即在加載規(guī)則前,需要刪除規(guī)則列表中及存儲在文檔類 CFireWallDoc 中的所有規(guī)則 }。 其中 RuleInfo rule[MAX_RULES]是 _RuleInfo 結(jié)構(gòu)體的一個變量,該數(shù)組用來存儲規(guī)則, _RuleInfo 類詳細(xì)情況見 節(jié)介紹。 視圖類 CFireWallView 視圖類一般是用來顯示信息的,在本程序中, CFireWallView 主要用來在規(guī)則列表中顯示存儲在文檔類 CFireWallDoc 中的規(guī)則。 class CFireWallView:public CFormView { public: CFireWallDoc* GetDocument()。//指針指向文檔類,和文檔類 CFireWallDoc關(guān)聯(lián)。 //{{AFX_VIRTUAL(CFireWallView) public: protected: virtual void OnInitialUpdate()。//在這個函數(shù)中初始化規(guī)則列表 //}}AFX_VIRTUAL public: void UpdateList()。//更新規(guī)則列表,和 Doc 文檔類保持一致 protected: void AddRuleToList()。//將文檔類 CFireWallDoc 中的規(guī)則顯示出來 }。 _RuleInfo 類 _RuleInfo 類是用來定義過濾規(guī)則的數(shù)據(jù)結(jié)構(gòu)。 typedef struct _RuleInfo 第 8 頁 共 21 頁 { unsigned long sourceIp。 unsigned long sourceMask。 unsigned short sourcePort。 unsigned long destinationIp。 unsigned long destinationMask。 unsigned short destinationPort。 unsigned int protocol。 int action。 }RuleInfo,*PRuleInfo。 詳細(xì)設(shè)計 主界面 程序主界面如圖 2。 圖 2 程序主界面 添加過濾規(guī)則 添加過濾規(guī)則的功能是通過一個“添加規(guī)則”對話框完成 , 如圖 3。 第 9 頁 共 21 頁 圖 3 添加規(guī)則對話框 添加規(guī)則功能是將對話框中的規(guī)則添加到存儲數(shù)據(jù)的文檔中。分兩個步驟: 取得添加規(guī)則對話框中的數(shù)據(jù): int result。 UpdateData(TRUE)。//使控件列表與控件關(guān)聯(lián) result=i_addr(m_ipsource,amp。srcIp)。//從源 IP 地址編輯框獲取源 IP 地址賦給 srcIp。 result = i_addr(m_srcMask, amp。srcMask)。//從源 IP 掩碼編輯框獲取源 IP地址掩碼賦給 srcMask。 result=i_addr(m_ipdestination, amp。dstIp)。//從目的 IP 地址編輯框獲取目的IP 地址賦給 dstIp。 result = i_addr(m_dstMask, amp。dstMask)。//從目的 IP 掩碼編輯框獲取目的IP 掩碼賦給 dstMask。 if(m_protocol == TCP) protocol = 6。 else if(m_protocol == UDP) protocol = 17。 else if(m_protocol == ICMP) protocol = 1。 第 10 頁 共 21 頁 else if(m_protocol == 所有 ) protocol = 0。 if(m_action == 放行 ) cAction = 0。 else cAction = 1。 srcPort = m_portsource。//源端口 dstPort = m_portDestination。//目的端口 將取得的數(shù)據(jù)添加到文檔類中: BOOL CFireWallDoc::AddRule(unsigned long srcIp, unsigned long srcMask, unsigned short srcPort, unsigned long dstIp, unsigned long dstMask, unsigned short dstPort, unsigned int protocol, int action) { rules[nRules].sourceIp = srcIp。 rules[nRules].sourceMask = srcMask。 rules[nRules].sourcePort = srcPort。 rules[nRules].destinationIp = dstIp。 rules[nRules].destinationMask = dstMask。 rules[nRules].destinationPort = dstPort。 rules[nRules].protocol = protocol。 rules[nRules].action = action。 nRules++。 return TRUE。 } 實現(xiàn)添加規(guī)則功能的程序流程圖如圖 4。 第 11 頁 共 21 頁 圖 4 添加規(guī)則流程圖 刪除過濾規(guī)則 刪除規(guī)則時,首先需要確定所要刪除的規(guī)則,再將其從文檔類中刪除,同時更新視圖類的顯示。當(dāng)正在進(jìn)行過濾時,則要先停止過濾,才能刪除規(guī)則。 刪除規(guī)則: void CMainFrame::OnButtondel() { CFireWallView *view = (CFireWallView *)GetActiveView()。 CFireWallDoc *doc = (CFireWallDoc *)GetActiveDocument()。 POSITION pos = view()。//選中的規(guī)則 if(started == TRUE)//如果正在過濾 { CString strTemp。 (請先停止過濾 )。 } int position。 position = view(pos)。//position 是當(dāng)前選擇的規(guī) 則的下一條的序數(shù) 是 開始 格式匹配? 取得對話框中的 數(shù)據(jù) 將數(shù)據(jù)添加到 Doc 中 彈出添加規(guī)則對話框 結(jié)束 輸入 正確的 規(guī)則 否 第 12 頁 共 21 頁 實現(xiàn)刪除規(guī)則功能的程序流程如圖 5。 圖 5 刪除規(guī)則 流程圖 其中 調(diào)用 DeleteRule()的代碼為: CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument()。//關(guān)聯(lián)文檔類 docoDeleteRule(position)。//調(diào)用 DeleteRule()函數(shù)刪除規(guī)則 viewUpdateList()。//更新規(guī)則列表的顯示 } void CFireWallDoc::DeleteRule(unsigned int position) { if(position = nRules) return。 if(position != nRules 1)//如果刪除的規(guī)則不是最后一條,則將它刪除后,后面的規(guī)則要往前移動 { unsigned int i。 for(i = position + 1。inRules。i++) { rules[i 1].sourceIp = rules[i].sourceIp。 rules[i 1].sourceMask = rules[i].sourceMask。 rules[i 1].sourcePort = rules[i].sourcePort。 rules[i 1].destinationIp = rules[i].destinationIp。 否 開始 取得當(dāng)前選擇的規(guī)則 正在過濾 ? 調(diào)用 DeleteR
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1