LAN管理器的設(shè)計與實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書

上傳人:仙*** 文檔編號:27886597 上傳時間:2021-08-21 格式:DOC 頁數(shù):47 大?。?12.02KB
收藏 版權(quán)申訴 舉報 下載
LAN管理器的設(shè)計與實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書_第1頁
第1頁 / 共47頁
LAN管理器的設(shè)計與實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書_第2頁
第2頁 / 共47頁
LAN管理器的設(shè)計與實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書_第3頁
第3頁 / 共47頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《LAN管理器的設(shè)計與實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書》由會員分享,可在線閱讀,更多相關(guān)《LAN管理器的設(shè)計與實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 單位代碼 10 學(xué) 號 分 類 號 TP393 密 級 畢業(yè)設(shè)計說明書 LAN管理器的設(shè)計與實現(xiàn) —主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn) 院(系)名稱 專業(yè)名稱 學(xué)生姓名 指導(dǎo)教師 2012年5月14日 LAN管理器的設(shè)計與實現(xiàn) ——主機(jī)信息探測與查詢子系統(tǒng)的設(shè)計與實現(xiàn) 摘 要 目前,局域網(wǎng)已廣泛應(yīng)用于機(jī)關(guān)、學(xué)校、企事業(yè)單位等。圍繞LAN管理器課程局域網(wǎng)建設(shè)任務(wù),基于TCP/IP協(xié)議棧,在

2、Windows下用VC編程語言,設(shè)計、實現(xiàn)了LAN管理器的主機(jī)信息探測與查詢子系統(tǒng)。概述了課題的選題背景、課題來源、畢業(yè)設(shè)計任務(wù)及畢業(yè)設(shè)計說明書的組織結(jié)構(gòu),說明了主機(jī)信息探測與查詢子系統(tǒng)的功能需求、性能需求和用戶需求,重點介紹了LAN管理器的總體設(shè)計及主機(jī)信息探測與查詢子系統(tǒng)的具體實現(xiàn)環(huán)境和主要實現(xiàn)代碼。測試結(jié)果表明該子系統(tǒng)能夠正常工作,實現(xiàn)了預(yù)期目的,為LAN管理器的設(shè)計和實現(xiàn)打下了基礎(chǔ)。 關(guān)鍵詞:LAN管理器,主機(jī)信息,探測與查詢,VC 黃河科技學(xué)院畢業(yè)設(shè)計說明書 第 II 頁 Design and Implementati

3、on of LAN Manager —— Host Detection and Query Subsystem Design and Achieve Author:Xing Ming Tutor:Sun Feixian Abstract Local area networks (LAN) have been widely applied in offices, schools, enterprises, institutions, and etc. Rounding the graduation designing tasks, a host information detect

4、ion and query sub-system is designed and implemented. The presented sub-system is based on Windows operating system, and it is implemented by VC programming language. With the research background and sources of the subject introduced, the graduate design tasks and organizational structure are given.

5、 Following that, the functional requirements, performance requirements and user requirements of the sub-system are illustrated. And then, the overall and detailed design methods of the host information detection and query sub-system are also given. Finally, the implementation environment and the mai

6、n codes of the sub-system are described. Testing results show that the sub-system can work properly. Thus, it lays the foundation for the design and implementation of LAN management system. Keywords: LAN Management, Host Information, Detection and query, VC 黃河科技學(xué)院畢業(yè)設(shè)計說明書 第 43 頁

7、 目 錄 1 緒論 1 1.1 選題背景 1 1.2 課題來源 1 1.3 畢設(shè)任務(wù)及本人貢獻(xiàn) 1 1.4 畢業(yè)設(shè)計說明書的組織結(jié)構(gòu) 2 2 需求分析 3 2.1 功能需求 3 2.2 性能需求 3 2.3 用戶需求 3 3 系統(tǒng)設(shè)計 4 3.1 設(shè)計思想 4 3.2 總體設(shè)計 4 3.3 詳細(xì)設(shè)計 5 4 系統(tǒng)實現(xiàn) 6 4.1 系統(tǒng)實現(xiàn)環(huán)境說明 6 4.2 主要模塊的實現(xiàn) 6 5 系統(tǒng)測試 17 4.1 測試目的 17 4.2 測試方法 17 4.3 測試用例與測試結(jié)果 17 4.4 測試結(jié)論 22

8、 結(jié)論 23 致謝 24 參考文獻(xiàn) 25 附錄 26 源代碼 26 1 緒論 1.1 選題背景 自從計算機(jī)問世以來,安全問題就一直存在。特別是隨著Internet的迅速擴(kuò)張和電子商務(wù)的興起,人們發(fā)現(xiàn)保護(hù)資源和數(shù)據(jù)的安全,讓他免受來自惡意入侵者的威脅是件相當(dāng)困難的事。提到網(wǎng)絡(luò)安全,很多人首先想到的是防火墻,防火墻作為一種靜態(tài)的訪問控制類安全產(chǎn)品通常使用包過濾的技術(shù)來實現(xiàn)網(wǎng)絡(luò)的隔離。適當(dāng)配置的防火墻雖然可以將非預(yù)期的訪問請求屏蔽在外,但不能檢查出經(jīng)過他的合法流量中是否包含著惡意的入侵代碼。 隨著入侵手段的日益復(fù)雜和通用系統(tǒng)不時出現(xiàn)的安全缺陷,預(yù)先評估分析網(wǎng)絡(luò)系統(tǒng)中存在的

9、安全問題,已經(jīng)成為網(wǎng)絡(luò)管理員們的重要需求。基于網(wǎng)絡(luò)的安全掃描主要掃描設(shè)定網(wǎng)絡(luò)內(nèi)的服務(wù)器、路由器、網(wǎng)橋、交換機(jī)、訪問服務(wù)器、防火墻等設(shè)備的安全漏洞,并可設(shè)定模擬攻擊,以測試系統(tǒng)的防御能力。這種技術(shù)模擬入侵者可能的攻擊行為,從系統(tǒng)外部進(jìn)行掃描,以探測是否存在可以被入侵者利用的系統(tǒng)安全薄弱之處。針對網(wǎng)絡(luò)入侵手段日益復(fù)雜、操作系統(tǒng)漏洞不斷涌現(xiàn)等問題,預(yù)先評估網(wǎng)絡(luò)信息系統(tǒng)存在的安全問題已成為網(wǎng)絡(luò)管理員的重要需求。如何保障自身網(wǎng)絡(luò)的安全,其中一個主要的方法就是自查自糾,而在這個過程中,對自己的網(wǎng)絡(luò)進(jìn)行掃描成為一種較為快捷、直觀、簡單的方法。掃描技術(shù)基于TCP/IP協(xié)議,對各種網(wǎng)絡(luò)服務(wù),無論是主機(jī)或者防火墻

10、、路由器都適用。同時, 掃描可以確認(rèn)各種配置的正確性,避免遭受不必要的攻擊。為了提高掃描的效率和精確度,主機(jī)的信息探測就是必不可少的?!? 1.2 課題來源 本課題來自河南省教育廳自然科學(xué)研究計劃項目(編號2010A520048)。 1.3 畢設(shè)任務(wù)及本人貢獻(xiàn) 圍繞LAN管理器研究,采用ARP、Ping技術(shù),設(shè)計主機(jī)信息的探測與查詢方法,并用VC編程實現(xiàn),同時連接數(shù)據(jù)庫。要求:探測速度盡可能快;既能探測單個目標(biāo)主機(jī)的信息,也能探測某一IP地址區(qū)間內(nèi)主機(jī)的信息;具備一定穿透防火墻的能力。 具體畢業(yè)設(shè)計任務(wù)如下: (1)根據(jù)任務(wù)書要求,收集材料,對比分析,完成譯文和文獻(xiàn)綜述; (2

11、)完成開題報告; (3)學(xué)習(xí)局域網(wǎng)程序設(shè)計知識,設(shè)計并實現(xiàn)主機(jī)信息探測與查詢子系統(tǒng); (4)撰寫畢業(yè)設(shè)計說明書。 本人的主要貢獻(xiàn)主要有以下幾點: (1)完成譯文和文獻(xiàn)綜述; (2)完成了開題報告; (3)實現(xiàn)了LAN管理器的總體設(shè)計和數(shù)據(jù)庫設(shè)計; (4)測試了主機(jī)信息探測與查詢子系統(tǒng); (5)撰寫了畢業(yè)設(shè)計說明書。 1.4 畢業(yè)設(shè)計說明書的組織結(jié)構(gòu) 本學(xué)位論文包括中英文摘要、目錄、緒論、正文、總結(jié)、參考文獻(xiàn)、致謝、源代碼,共八個部分。其中,論文的緒論、正文和總結(jié)三部分的組織安排如下: (1) 緒論:首先介紹了課題的研究背景和課題來源,然后介紹了本文的研究內(nèi)容與主要貢

12、獻(xiàn),最后列出了論文的組織結(jié)構(gòu)。 (2) 需求分析:主要介紹了該系統(tǒng)的用戶需求、功能需求和性能需求。 (3) 系統(tǒng)設(shè)計:詳細(xì)介紹了LAN管理器主機(jī)信息探測與查詢子系統(tǒng)的基本思想、整體設(shè)計和詳細(xì)設(shè)計。 (4) 系統(tǒng)實現(xiàn):給出系統(tǒng)實現(xiàn)的標(biāo)準(zhǔn)測試環(huán)境和實現(xiàn)系統(tǒng)的主要代碼。 (5) 系統(tǒng)測試:在標(biāo)準(zhǔn)測試環(huán)境下的測試結(jié)果進(jìn)行分析。 (6) 總結(jié):對論文的主要工作進(jìn)行了總結(jié)。 2 需求分析 2.1 功能需求 (1) 探測與查詢功能 可利用多種技術(shù)對主機(jī)信息進(jìn)行探測與查詢。 (2) 防火墻穿越功能 防火墻穿越,即在對方已安裝防火墻并且正常運(yùn)行的情況下

13、探測主機(jī)信息,這是主機(jī)信息探測與查詢系統(tǒng)的核心功能,也是主機(jī)信息探測與查詢系統(tǒng)必不可少的功能。 2.2 性能需求 盡可能快的探測到主機(jī)信息,既能探測單個目標(biāo)主機(jī)的信息,也能探測某一IP地址區(qū)間內(nèi)主機(jī)的信息,具備一定穿透防火墻的能力,同時準(zhǔn)確率不低于90%。 2.3 用戶需求 用戶需求主要有以下幾個方面: (1) 通過簡單的操作就能夠探測到主機(jī)信息,并且有必要的返回信息并記錄結(jié)果; (2) 在對方打開防火墻禁止Ping的時候,我們Ping不通的時候應(yīng)該通過一種有效的方式來探測到對方主機(jī)信息; (3) 可以同時探測多個主機(jī)的信息; (4) 在某一主機(jī)的信息發(fā)生變更時可以

14、更新出所變更后的信息; (5) 具有數(shù)據(jù)存儲功能。 3 系統(tǒng)設(shè)計 3.1 設(shè)計思想 通過arp協(xié)議,調(diào)用arp功能函數(shù),實現(xiàn)主機(jī)信息的探測,通過函數(shù)的返回值來判斷主機(jī)的是否存活,并且獲取存活主機(jī)的mac。然后通過IP層協(xié)議獲取主機(jī)的詳細(xì)信息(gethostbyaddr),例如:主機(jī)名字,地址類型,主機(jī)網(wǎng)絡(luò)地址等;當(dāng)獲取信息之后存入數(shù)據(jù)庫(sql server 2005),于是要用到數(shù)據(jù)庫的存取知識。由于探測主機(jī)的范圍比較大,所以需要用到多線程的思想。 3.2 總體設(shè)計 基于ARP協(xié)議的主機(jī)信息探測與查詢系統(tǒng)主要包括域名解析和IP地址的轉(zhuǎn)換、ARP請求發(fā)送與處

15、理兩大模塊,各模塊的功能簡述如下: 域名解析及IP地址轉(zhuǎn)換:調(diào)用inet_addr將輸入的點分十進(jìn)制數(shù)表示的IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序的IP地址;獲取主機(jī)名:調(diào)用gethostbyaddr獲取存活主機(jī)的主機(jī)名; ARP請求發(fā)送與處理:調(diào)用sendARP函數(shù)向目標(biāo)地址發(fā)送ARP請求;獲取MAC地址,判斷ARP返回的MAC地址轉(zhuǎn)換成易讀的形式,并將主機(jī)信息寫入數(shù)據(jù)庫。 依據(jù)上述理論,具體的功能模塊如圖3.1所示。 圖3.1 功能模塊 3.3 詳細(xì)設(shè)計 依據(jù)畢業(yè)設(shè)計任務(wù)書要求,自己負(fù)責(zé)設(shè)計的LAN管理器的主機(jī)信息與探測流程圖如圖3.2所示。 圖3.2 程序探測流程圖 4

16、 系統(tǒng)實現(xiàn) 4.1 系統(tǒng)實現(xiàn)環(huán)境說明 操作系統(tǒng):Windows xp 開發(fā)工具:Visual studio 6.0 數(shù)據(jù)庫:sql server 2005 4.2 主要模塊的實現(xiàn) (1) 封裝CDataClass類 首先封裝了一個基于CObject類的CDataClass類來操作數(shù)據(jù)庫,有連接數(shù)據(jù)庫,打開數(shù)據(jù)庫記錄,添加信息,刪除信息,更新信息等功能,代碼如下: class CDataClass:CObject { public: CDataClass(); bool Delete(CString sql); bool Insert(CString sq

17、l); bool Update(CString sql); _RecordsetPtr & Select(CString sql); bool Close(); bool Open(); _RecordsetPtr pRst; ~CDataClass(); private: _ConnectionPtr pConn; // 建立Connection _CommandPtr pCmd; // 建立Command }; CDataClass::CDataClass() { WaitForSingleObject(h

18、Mutex,INFINITE); CoInitialize(NULL); pRst.CreateInstance(__uuidof(Recordset)); pConn.CreateInstance(__uuidof(Connection)); pCmd.CreateInstance(__uuidof(Command)); } bool CDataClass::Open() { HRESULT res=0; try { pConn->ConnectionString ="Provider=SQLOLEDB.1; Integrated Security=SS

19、PI; Persist Security Info=False; Initial Catalog=LanMana; Data Source=.";//LT-PC\\SQLEXPRESS res=pConn->Open("","","",adModeUnknown); pCmd->ActiveConnection=pConn; } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } return true; } _RecordsetPtr & CDa

20、taClass::Select(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; pRst=pCmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); } return pRst; } bool CDataClass::Insert(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; p

21、Cmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } return true; } bool CDataClass::Delete(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; pCmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) {

22、 AfxMessageBox(e.Description()); return false; } return true; } bool CDataClass::Update(CString sql) { try { pCmd->CommandText=(LPCTSTR)sql; pCmd->Execute(NULL,NULL,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } return true;

23、 } bool CDataClass::Close() { try { pConn->Close(); } catch (_com_error e) { AfxMessageBox(e.Description()); ReleaseMutex(hMutex); return false; } return true; } CDataClass::~CDataClass() { CoUninitialize(); ReleaseMutex(hMutex); } (2) 所用的主要成員變量如圖4.1所示。 圖4.1 主要

24、成員變量 (3) 初始化函數(shù)代碼 通過初始化函數(shù)探測該主機(jī)所在IP地址的地址段信息,并初始化列表函數(shù)的頭標(biāo)題,代碼如下: WSADATA wsadata; CString str; if(WSAStartup(MAKEWORD(2,2),&wsadata)) { str.Format("不能初始化sock!"); MessageBox((LPCTSTR)str); exit(0); } char hostname[256]; gethostname(hostname,sizeof(hostname)); hostent *host=gethostbyname(h

25、ostname); char* IP=inet_ntoa(*(in_addr*)host->h_addr_list[0]); m_IPAddress.Format("%s",IP); int a,b,c; sscanf(IP,"%d.%d.%d.%d",&a,&b,&c,&m_Begin); m_IPAddressPre.Format("%d.%d.%d.",a,b,c); m_Pre.Format("%s",(LPCTSTR)m_IPAddressPre); m_Begin=1; UpdateData(false); //隱藏側(cè)邊欄 OnButtonSorh(); //

26、初始化互斥量 hMutex=CreateMutex(NULL,false,NULL); LVCOLUMN lvColumn; char HeaderTxt[5][10]= {"序號","IP地址","電腦名","MAC地址","操作系統(tǒng)"}; int nWidth[5]={50,100,100,120,100}; for(int i=0;i<5;i++) { lvColumn.mask = LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH|LVCF_FMT; lvColumn.fmt = LVCFMT_CENTER; lvColumn.iSubItem

27、= i; lvColumn.pszText = HeaderTxt[i]; lvColumn.cx = nWidth[i]; m_Info.InsertColumn(i,&lvColumn); } (4) 探測該局域網(wǎng)內(nèi)存活的主機(jī)的代碼 檢測函數(shù): void CLanManaDlg::OnButtonIndex() { // TODO: Add your control notification handler code here //向數(shù)據(jù)庫增加數(shù)據(jù) if(m_IsOn==true) { UpdateData(true); CDataClass

28、 ado; CString sql; if(!ado.Open()) return; for (int i=m_Begin;i<=m_End;i++) { if(i==m_Begin) { sql.Format("delete from IPInfo"); if(!ado.Delete(sql)) return; } sql.Format("insert into IPInfo values(%s%d,,,0,)",(LPCTSTR)m_IPAddressPre,i); if(!ado.Inse

29、rt(sql)) return; } if(!ado.Close()) return; m_Index.SetWindowText("中止"); SetTimer(1,2000,NULL); int * span=new int[2]; span[0]=m_Begin; span[1]=m_End; m_HThread=AfxBeginThread(ExploreHost,span); if(m_HThread==NULL) exit(1); m_IsOn=false; } else { m

30、_Index.SetWindowText("檢測"); TerminateThread(m_HThread,-1); KillTimer(1); m_IsOn=true; } } (5) 線程函數(shù)以及探測函數(shù) UINT CLanManaDlg::ExploreHost(LPVOID param) { int *span=(int *)param; int begin=span[0],end=span[1]; delete span; while(true) { for (int i=begin;i<=end;i+=SPAN) {

31、 int *p=new int[2]; p[0]=i; if(i+SPAN

32、aram; int begin=p[0],end=p[1]; delete p; BYTE Mac[6]; CString IP; for (int i=begin;iend) break; IP.Format("%s%d",(LPCTSTR)m_IPAddressPre,i); char pIP[16]; strcpy(pIP,IP.GetBuffer(16)); HRESULT hr = Arp(pIP,Mac); if(hr == 0) { CString s

33、tr; CString strMac(""); CString strHostname(""); int i; for(i=0;i<=5;i++) { if(i==5) { str.Format("%02X",Mac[i]); } else str.Format("%02X:",Mac[i]); strMac += str; } IPAddr ipAddr; char buf[256]; ipAddr = inet_addr ((LPCTST

34、R)IP); ZeroMemory(buf,256); hostent * remoteHostent = gethostbyaddr( (char*)&ipAddr,sizeof( in_addr ), AF_INET ); if ( remoteHostent ) strHostname = remoteHostent->h_name; //操作數(shù)據(jù)庫 CString sql; CDataClass dao; int res=dao.Open(); if(res==-1) return -1; sq

35、l.Format("update IPInfo set hostname=%s,MAC=%s,isonline=1 where IP=%s",(LPCTSTR)strHostname,(LPCTSTR)strMac,(LPCTSTR)IP); if(!dao.Update(sql)) return -1; if(!dao.Close()) return -1; } else{ CString sql; CDataClass dao; if(!dao.Open()) return -1; sql.Format("

36、update IPInfo set isonline=0 where IP=%s",(LPCTSTR)IP); if(!dao.Update(sql)) return -1; if(!dao.Close()) return -1; } } return 0; } (6) 精確查詢、模糊查詢的代碼 void CLanManaDlg::OnButtonQuary() { // TODO: Add your control notification handler code here UpdateData(true); if

37、 (m_IsAuto==true) { KillTimer(1); m_Refresh.SetWindowText("繼續(xù)"); m_IsAuto=false; } int ID1,ID2; CString str1,str2; ID1=GetCheckedRadioButton(IDC_RADIO_EXACT,IDC_RADIO_DIM); ID2=GetCheckedRadioButton(IDC_RADIO_HOSTNAME,IDC_RADIO_MAC); ((CButton*)GetDlgItem(ID1))->GetWindowText(

38、str1); ((CButton*)GetDlgItem(ID2))->GetWindowText(str2); if(!str1.Compare("精確")) { if (!str2.Compare("主機(jī)名")) { CString sql; sql.Format("select * from IPInfo where hostname=%s and isonline=1",(LPCTSTR)m_Text); GetData(sql); } else if (!str2.Compare("IP地址")) { CString

39、 sql; sql.Format("select * from IPInfo where IP=%s and isonline=1",(LPCTSTR)m_Text); GetData(sql); } else { CString sql; sql.Format("select * from IPInfo where MAC=%s and isonline=1",(LPCTSTR)m_Text); GetData(sql); } } else { if (!str2.Compare("主機(jī)名")) { CStr

40、ing sql; sql.Format("select * from IPInfo where hostname like %%%s%% and isonline=1",(LPCTSTR)m_Text); GetData(sql); } else if (!str2.Compare("IP地址")) { CString sql; sql.Format("select * from IPInfo where IP like %%%s%% and isonline=1",(LPCTSTR)m_Text); GetData(sql); } e

41、lse { CString sql; sql.Format("select * from IPInfo where MAC like %%%s%% and isonline=1",(LPCTSTR)m_Text); GetData(sql); } } } (7) 數(shù)據(jù)顯示函數(shù) void CLanManaDlg::GetData(CString sql) { //操作數(shù)據(jù)庫 _RecordsetPtr pRst(__uuidof(Recordset)); CDataClass dao; dao.Open(); pRst=dao

42、.Select(sql); if(pRst==NULL) return; m_Info.DeleteAllItems(); int ID=0; try{ while (!pRst->adoEOF) { CString num; num.Format("%d",ID+1); CString IP=(LPCTSTR)(_bstr_t)pRst->GetCollect("IP"),Hostname=(LPCTSTR)(_bstr_t)pRst->GetCollect("hostname"),MAC=(LPCTSTR)(_bstr_t)pR

43、st->GetCollect("MAC"); int IsOnline=(long)pRst->GetCollect("isonline"); CString OS=(LPCTSTR)(_bstr_t)pRst->GetCollect("OS"); m_Info.InsertItem(ID,(LPCTSTR)num); m_Info.SetItemText(ID,1,(LPCTSTR)IP); m_Info.SetItemText(ID,2,(LPCTSTR)Hostname); m_Info.SetItemText(ID,3,(LPCTSTR)

44、MAC); m_Info.SetItemText(ID,4,(LPCTSTR)OS); ID++; pRst->MoveNext(); } pRst->Close(); dao.Close(); } catch (_com_error e) { MessageBox(e.Description()); } } (8) 定時刷新 void CLanManaDlg::OnTimer(UINT nIDEvent) { CString sql("select * from IPInfo where isonline=1")

45、; switch(nIDEvent) { case 1: GetData(sql); break; case 2: break; default: ; } CDialog::OnTimer(nIDEvent); } (9) 搜索區(qū)域的顯示與隱藏 void CLanManaDlg::OnButtonSorh() { static CRect RectLarge(0,0,0,0),RectSmall(0,0,0,0); if(RectLarge.IsRectNull()) { GetWindowRect(Rect

46、Large); RectSmall=RectLarge; RectSmall.right-=200; } if(m_IsShow) { SetWindowPos(NULL,RectLarge.left,RectLarge.right,RectLarge.Width(),RectLarge.Height(),SWP_NOZORDER|SWP_NOMOVE); m_IsShow=false; } else { SetWindowPos(NULL,RectSmall.left,RectSmall.right,RectSmall.Width(),Rec

47、tSmall.Height(),SWP_NOZORDER|SWP_NOMOVE); m_IsShow=true; } } 5 系統(tǒng)測試 5.1 測試目的 測試所做程序能否按照按照要求完成探測任務(wù),是否能夠快而準(zhǔn)確的得到結(jié)果,能否滿足用戶的需求。 5.2 測試方法 在局域網(wǎng)信息探測與查詢系統(tǒng)的開發(fā)環(huán)境下進(jìn)行模擬測試,并組建一個小型的局域網(wǎng)來驗證。 5.3 測試用例與測試結(jié)果 主界面如圖5.1所示。 圖5.1 程序界面 點擊檢測之后的結(jié)果如圖5.2所示。 圖5.2 程序界面 點擊”檢測”按鈕后,該按鈕會改變?yōu)椤爸兄埂卑粹o,在檢測過程中如點擊

48、“中止”按鈕,則會中止該次檢測。 縮小探測范圍所探測到的結(jié)果如圖5.3所示。 圖5.3 程序界面 若IP網(wǎng)段有所變化,可以點擊“刷新”按鈕,可以探測出新的網(wǎng)段。 刷新之前的界面如圖5.4所示。 圖5.4 程序界面 刷新之后的界面如圖5.5所示。 圖5.5 程序界面 如果在探測過程中有新的主機(jī)打開,同樣可以點擊“刷新”按鈕,便可以將新的主機(jī)信息顯示出來。 刷新之前的界面如圖5.6所示。 圖5.6 程序界面 刷新之后的界面如圖5.7所示。 圖5.7 程序界面 精確、模糊查詢界面如圖5.8所示。 圖5.8 程序界面 在該界面,可以通過主機(jī)

49、名、IP地址、MAC地址分別進(jìn)行精確和模糊的查詢。 精確、模糊查詢的事例如圖5.9、5.10所示。 圖5.9 程序界面 圖5.10 程序界面 5.4 測試結(jié)論 LAN管理器主機(jī)信息探測與查詢子系統(tǒng)能夠較好的實現(xiàn)主機(jī)信息的探測與查詢?nèi)蝿?wù),并且在其他主機(jī)防火墻開啟的情況下依然可以探測到有效地信息,所顯示的信息也比較準(zhǔn)確,并且精確和模糊查詢功能也能運(yùn)行正常,能夠在較短的時間內(nèi)完成任務(wù)。所探測到的主機(jī)相關(guān)信息,可以同時更新到sql server數(shù)據(jù)庫中,做到了對探測結(jié)果的有效保存。LAN管理器主機(jī)信息探測與查詢子系統(tǒng)在功能方面,完成了探測與查詢功能和防火墻穿越功能,在性能方面,能夠

50、在較短的時間內(nèi)完成對單個或多個主機(jī)的信息探測,準(zhǔn)確率也不低于90%,在用戶方面,做到了操作簡單、界面簡潔、及時更新、數(shù)據(jù)存儲等功能。LAN管理器主機(jī)信息探測與查詢子系統(tǒng)基本完成了預(yù)期的目標(biāo)。 結(jié)論 通過這次的局域網(wǎng)信息探測與查詢系統(tǒng)的設(shè)計,讓我受益良多。這是一次綜合網(wǎng)絡(luò)、數(shù)據(jù)庫和VC編程的設(shè)計過程。我了解和掌握了網(wǎng)絡(luò)的一些特性,并且能夠進(jìn)行數(shù)據(jù)庫的設(shè)計和使用VC進(jìn)行相關(guān)軟件的編程,同時培養(yǎng)了正確的設(shè)計思想和分析問題解決問題的能力,特別是整體設(shè)計和各功能模塊的詳細(xì)設(shè)計能力,以及解決實際碰到困難解決困難的能力,學(xué)到了很多知識。這位我們將來的發(fā)展提供了更多的機(jī)會。經(jīng)過這次畢業(yè)

51、設(shè)計,我深深地體會到嚴(yán)謹(jǐn)、認(rèn)真、仔細(xì)、有耐心是一個網(wǎng)絡(luò)工程設(shè)計人員必須具備的素質(zhì)。 主機(jī)信息探測與查詢系統(tǒng)的工作分為四個步驟:獲取網(wǎng)段、確定范圍、開始查詢、得出結(jié)果。隨著入侵手段的日益復(fù)雜和通用系統(tǒng)不時出現(xiàn)的安全缺陷,預(yù)先評估分析網(wǎng)絡(luò)系統(tǒng)中存在的安全問題,已經(jīng)成為網(wǎng)絡(luò)管理員們的重要需求?;诰W(wǎng)絡(luò)的安全掃描主要掃描設(shè)定網(wǎng)絡(luò)內(nèi)的服務(wù)器、路由器、網(wǎng)橋、交換機(jī)、訪問服務(wù)器、防火墻等設(shè)備的安全漏洞,并可設(shè)定模擬攻擊,以測試系統(tǒng)的防御能力。這種技術(shù)模擬入侵者可能的攻擊行為,從系統(tǒng)外部進(jìn)行掃描,以探測是否存在可以被入侵者利用的系統(tǒng)安全薄弱之處。主機(jī)信息探測與查詢系統(tǒng)也就可以來作為一個借鑒,用來研究和模擬入

52、侵者的行為,對我們以后的網(wǎng)路安全也能夠提供和一些保障。 由于水平有限及所需要學(xué)校的知識無限,在設(shè)計中難免有不少錯誤和不足之處,還請老師們批評指正。 致謝 在此向尊敬的導(dǎo)師孫飛顯老師致以真誠的謝意和敬意,感謝導(dǎo)師對我學(xué)習(xí)上孜孜不倦的教誨和生活上無微不至的關(guān)懷。導(dǎo)師淵博的知識、創(chuàng)新的思維、嚴(yán)于律己寬以待人的品質(zhì)影響著我,教育著我,不僅開闊了我的思路,增長了我的學(xué)識,也使我在今后的學(xué)習(xí)、工作、生活中受益匪淺。衷心祝愿導(dǎo)師身體健康,萬事如意。 感謝師兄對我工作的幫助,在我論文工作最無助的時候,支持我并和我一起調(diào)試程序,使我在比較短的時間內(nèi)解決了面臨的困難,能夠認(rèn)識你們是我人

53、生的一筆財富。 感謝我的家人在我求學(xué)期間對我無私的幫助和支持。 感謝抽空參與評審我論文的老師。 參考文獻(xiàn) [1] 肖書成.Ad hoc網(wǎng)絡(luò)及其路由性能研究.重慶:重慶郵電學(xué)院學(xué)報,2004. [2] Basavaraj.無線網(wǎng)絡(luò)

54、中的IP.北京:人民郵電出版社,2004. [3] Samir RD.Charles EE.Elizabeth M R Performance comparison of two on-demand routing protocols for Ad Hoc networks 2001,5:21~24. [4] 蔡濤等.無線通信原理與應(yīng)用[M].北京:電子工業(yè)出版社,2006. [5] C K Toh Ad Hoc Mobile Wireless Networks:Protocols and Systems2002. [6] 于

55、斌,孫斌,溫暖等.NS2與網(wǎng)絡(luò)模擬.北京:人民郵電出版社.2008. [7] 徐雷鳴,龐博,趙耀.NS與網(wǎng)絡(luò)模擬.北京:人民郵電出版社.2008. [8] 鄭少仁,王海濤,趙志峰.Ad Hoc網(wǎng)絡(luò)技術(shù)2005 , 1:12~15. [9] (美)斯托林斯,無線通信與網(wǎng)絡(luò).北京:清華人學(xué)出版社,2005. [10] 林軍,謝維波.一種基于AODV協(xié)議的改進(jìn)協(xié)議EAODV. 貴州大學(xué)學(xué)報(自 然科學(xué)版).2008. [11] 施榮華.崔奕芳.江玲. Ad Hoc網(wǎng)絡(luò)中QoS的路由協(xié)議算法研究.計算機(jī)科學(xué).2008. [12] 王寧Ad Hoc技術(shù)在未來無線通信中的應(yīng)用

56、 附錄 源代碼 // LanManaDlg.h : header file // #if !defined(AFX_LANMANADLG_H__47CCEDF7_93D3_4C23_944F_EC0DCFC6077A__INCLUDED_) #define AFX_LANMANADLG_H__47CCEDF7_93D3_4C23_944F_EC0DCFC6077A__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 //////////////

57、/////////////////////////////////////////////////////////////// // CLanManaDlg dialog class CLanManaDlg : public CDialog { // Construction public: static UINT GetHostInfo(LPVOID param); static UINT ExploreHost(LPVOID param); CLanManaDlg(CWnd* pParent = NULL); // standard constructor

58、static CString m_IPAddressPre; // Dialog Data //{{AFX_DATA(CLanManaDlg) enum { IDD = IDD_LANMANA_DIALOG }; CListCtrl m_Info; CButton m_SORH; CButton m_Select; CButton m_Refresh; CButton m_Quary; CButton m_Index; CString m_Text; int m_End; int m_Begin; CString m_Pre; //}

59、}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CLanManaDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CLanM

60、anaDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnButtonIndex(); afx_msg void OnButtonRefresh(); afx_msg void OnButtonSelect(); afx_msg void OnButtonQuary(); afx_msg voi

61、d OnTimer(UINT nIDEvent); afx_msg void OnButtonSorh(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: bool m_IsAuto; static _RecordsetPtr OperateDB(CString sql); void PrintFigure(); bool m_IsShow; HANDLE m_HThread; bool m_IsOn; void GetData(CString sql); void ShowFigure(); void

62、ShowList(); bool m_IsIist; CString m_IPAddress; }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_LANMANADLG_H__47CCEDF7_93D3_4C23_944F_EC0DCFC6077A__INCLUDED_) // LanManaDlg.cpp : implemen

63、tation file // #include "stdafx.h" #include "LanMana.h" #include "LanManaDlg.h" #include "DataClass.h" #include #include #include "ArpDll.h" #include "Iphlpapi.h" #pragma comment(lib,"Iphlpapi.lib") #pragma comment(lib,"Ws2_32.lib") #pragma comment(lib,"ArpDll.lib")

64、 #define SPAN 5 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif HANDLE hMutex =NULL; ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { p

65、ublic: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL //

66、 Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!