計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)網(wǎng)絡(luò)信息管理系統(tǒng)設(shè)計(jì)_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)網(wǎng)絡(luò)信息管理系統(tǒng)設(shè)計(jì)_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)網(wǎng)絡(luò)信息管理系統(tǒng)設(shè)計(jì)_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)網(wǎng)絡(luò)信息管理系統(tǒng)設(shè)計(jì)_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)網(wǎng)絡(luò)信息管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 課 程 設(shè) 計(jì)報(bào)告學(xué)年學(xué)期 2010-2011學(xué)年第二學(xué)期課程名稱 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)院 系 計(jì)算機(jī)系專 業(yè) 網(wǎng)絡(luò)工程學(xué) 號 姓 名 指導(dǎo)教師 二一一 年 六 月 三十 日 摘 要本機(jī)網(wǎng)絡(luò)信息管理器提供了有關(guān)計(jì)算機(jī)性能的信息,并顯示了計(jì)算機(jī)上主要設(shè)備信息;如果連接到網(wǎng)絡(luò),那么還可以查看網(wǎng)絡(luò)狀態(tài)并迅速了解網(wǎng)絡(luò)是如何工作的。它的用戶界面提供了設(shè)置網(wǎng)絡(luò)信息的選項(xiàng),其下還有具體的內(nèi)容設(shè)置,而且這里可以查看到當(dāng)前系統(tǒng)的cpu使用比率、內(nèi)存等數(shù)據(jù),默認(rèn)設(shè)置下系統(tǒng)每隔兩秒鐘對數(shù)據(jù)進(jìn)行1次自動更新?,F(xiàn)在是網(wǎng)絡(luò)的社會,在應(yīng)用網(wǎng)絡(luò)的同時(shí)也要對計(jì)算機(jī)的信息進(jìn)行保護(hù),因而需要進(jìn)行本地計(jì)算機(jī)網(wǎng)絡(luò)信息管理,使得我們更好

2、的進(jìn)行計(jì)算機(jī)的運(yùn)用。以及對信息的管理和保護(hù)。因而有了這樣的一個課程設(shè)計(jì)。一緒論 本文所介紹的網(wǎng)絡(luò)信息管理系統(tǒng)是基于開放的c#應(yīng)用程序開發(fā)設(shè)計(jì)的,其主要特性是能動態(tài)、實(shí)時(shí)的完成信息的傳遞,且具有高效的交互性,更有效的反映本機(jī)的網(wǎng)絡(luò)設(shè)置狀況,易于維護(hù)和更新,其運(yùn)行所需環(huán)境及其工作流程和各個功能控件的工作原理將在本文依次介紹,并且文中提供了部分程序源代碼。1 ip/tcp協(xié)議常識(1)ip、tcp協(xié)議的特點(diǎn):tcp/ip(transmission control protocol/internet protocol)是傳輸控制協(xié)議/網(wǎng)際協(xié)議的縮寫, tcp/ip是當(dāng)今網(wǎng)絡(luò)互聯(lián)的核心協(xié)議。tcp/ip

3、協(xié)議的體系結(jié)構(gòu)共有四個層次,即應(yīng)用層、傳輸層、網(wǎng)絡(luò)互聯(lián)層和網(wǎng)絡(luò)接口層。ip協(xié)議的作用:第一,它是網(wǎng)絡(luò)層的協(xié)議,提供互聯(lián)網(wǎng)上數(shù)據(jù)傳輸?shù)慕y(tǒng)一格式。第二,提供不可靠的無連接的服務(wù)。第三,定義了互聯(lián)網(wǎng)上的傳輸數(shù)據(jù)的基本單元,提供了供路由選擇的信息,沒有差錯校驗(yàn)和處理的機(jī)制。tcp協(xié)議的功能:差錯控制可靠性、面向連接、分段(segment)、端口號。tcp是傳輸控制協(xié)議,是面向連接的提供了一種可靠的傳輸服務(wù),它用三次握手和滑動窗口機(jī)制來保證傳輸?shù)目煽啃?,及進(jìn)行流量控制。 tcp/ip協(xié)議具有以下特點(diǎn):協(xié)議標(biāo)準(zhǔn)具有開放性,其獨(dú)立于特定的計(jì)算機(jī)硬件及操作系統(tǒng),可以免費(fèi)使用。統(tǒng)一分配網(wǎng)絡(luò)地址,使得每個tcp/

4、ip 設(shè)備在網(wǎng)絡(luò)中都具有唯一的ip地址。實(shí)現(xiàn)了高層協(xié)議的標(biāo)準(zhǔn)化,能為用戶提供多種可靠的服務(wù)。(2)tcp/ip協(xié)議進(jìn)行傳輸數(shù)據(jù)傳輸?shù)倪^程:應(yīng)用程序?yàn)榱藗鬏敂?shù)據(jù)會調(diào)用tcp,將數(shù)據(jù)和對應(yīng)的參數(shù)傳給tcp,將tcp 數(shù)據(jù)包封裝在ip包內(nèi),通過網(wǎng)絡(luò)送給目的tcp。接收方tcp在接收到數(shù)據(jù)后通知上層應(yīng)用程序,tcp將保證接收數(shù)據(jù)的正確性。在實(shí)現(xiàn)tcp的主機(jī)上,tcp可以被看成是一個模塊,和文件系統(tǒng)區(qū)別不大,tcp 也可以調(diào)用一些操作系統(tǒng)的功能,tcp不直接和網(wǎng)絡(luò)打交道,控制網(wǎng)絡(luò)的任務(wù)由專門的設(shè)備驅(qū)動模塊完成。tcp只是調(diào)用ip接口,向tcp提供所有tcp需要的服務(wù)。(3)端口號:有的時(shí)候,一個ip地址

5、不能完整的標(biāo)識一臺服務(wù)器,這是應(yīng)為一臺物理性的計(jì)算機(jī)同時(shí)運(yùn)行著多個應(yīng)用程序,這就需要我們來區(qū)別同一臺機(jī)子上的不同的服務(wù),所以就在傳輸層和應(yīng)用層上設(shè)置接口,就是 端口。端口實(shí)際是一個16位長的 地址,他的范圍是065535之間,其中01023是熟知端口,主要是給提供服務(wù)的應(yīng)用程序使用,這些端口是所有應(yīng)用進(jìn)程都只道的,102465535為一般端口,也稱動態(tài)端口、連接端口,用來隨時(shí)分配要求通信的個客戶端應(yīng)用程序。在數(shù)據(jù)傳輸過程中,各種服務(wù)器不斷的檢測分配給他的端口,一邊發(fā)現(xiàn)要求和他通信的客戶端。2windows management instrumentation,windows 管理規(guī)范wmi(w

6、indows management instrumentation,windows 管理規(guī)范)是一項(xiàng)核心的 windows 管理技術(shù);用戶可以使用 wmi 管理本地和遠(yuǎn)程計(jì)算機(jī)。windows 2k/xp和windows 98 都支持wmi;如果為nt 4.0和windows 95加上了 service pack 4或更高版本,n wmit 4.0和win95也支持wmi。因此,用wmi進(jìn)行遠(yuǎn)程管理時(shí),并非一定要用windows 2k/xp(當(dāng)然,如果wmi腳本在一臺沒有性能監(jiān)視器的win9x機(jī)器上運(yùn)行,就不能在遠(yuǎn)程win9x系統(tǒng)上查詢windows 2k/xp的性能監(jiān)視器。 如前所述,wmi

7、允許通過一個公共的接口訪問多種操作系統(tǒng)構(gòu)成單元,因此不必分別對待各種底層接口或所謂的“提供者”。利用wmi可以高效地管理遠(yuǎn)程和本地的計(jì)算機(jī);與此相對,并非所有的windows 2k/xp命令行工具都支持遠(yuǎn)程運(yùn)行。 wmi是wbem模型的一種實(shí)現(xiàn)。wbem即web-based enterprise management,或基于web的企業(yè)管理,wbem由dmtf(distributed management task force,分布式管理任務(wù)組)在許多廠商的幫助下創(chuàng)立,包括compaq、sun、microsoft等。wbem的目標(biāo)是,為管理企業(yè)環(huán)境開發(fā)一個標(biāo)準(zhǔn)的接口集。wbem模型最關(guān)鍵的部分

8、是它的數(shù)據(jù)模型(或描述和定義對象的方式)、編碼規(guī)范(encoding specification),以及在客戶端和服務(wù)器端之間傳輸數(shù)據(jù)的模式。 wbem的數(shù)據(jù)模型是cim(common information model,公共信息模型)。cim是一個用來命名計(jì)算機(jī)的物理和邏輯單元的標(biāo)準(zhǔn)的命名系統(tǒng)(或稱為命名模式),例如硬盤的邏輯分區(qū)、正在運(yùn)行的應(yīng)用的一個實(shí)例,或者一條電纜。 cim是一個面向?qū)ο蟮哪P?,使用一組面向?qū)ο蟮男g(shù)語進(jìn)行描述。cim包含類(class),類是被管理單元的模板。類的實(shí)例稱為對象(object),對象代表著底層系統(tǒng)的一個具體單元。名稱空間(namespace)是一個類的集合

9、,每個名稱空間面向一個特定的管理領(lǐng)域。類包含屬性(property)和方法(method)。 cim分三層。第一層是核心模型(core model),這一層包含的類定義對于所有管理領(lǐng)域來說都是共同的。第二層是公共模型(common model),這一層包含的類定義對于特定的管理領(lǐng)域來說是公共的,但與具體的操作系統(tǒng)和系統(tǒng)設(shè)計(jì)無關(guān)。第三層是擴(kuò)展模型(extension model),這一層包含的類定義與特定的操作系統(tǒng)或技術(shù)有關(guān)。 wmi是microsoft擴(kuò)展cim 2.0得到的面向win32系統(tǒng)的擴(kuò)展模型。引用wmi類和屬性的形式是“擴(kuò)展前綴_類名稱.屬性名稱”,例如win32_computer

10、system. name,其中win32是cim模式cimv2名稱空間內(nèi)wmi擴(kuò)展類的前綴,computersystem是類,name是屬性。 編寫wmi腳本的很大一部分工作涉及到讀取和設(shè)置屬性值。當(dāng)前,wmi提供的方法還很有限,但隨著時(shí)間的推移,相信wmi和cim提供的方法都會越來越豐富。二 規(guī)劃設(shè)計(jì)本信息管理系統(tǒng)分為三個部分:首先是,是對本機(jī)的基本信息的獲取,包括cpu、內(nèi)存等,以及網(wǎng)絡(luò)信息的獲取,包括域名、工作組等,最后還用cpu、內(nèi)存等使用情況的監(jiān)視。其次,是對本機(jī)的所有可用網(wǎng)絡(luò)適配器的設(shè)置,包括ip地址、子網(wǎng)掩碼、dns服務(wù)器地址等等。3.然后,是對本機(jī)的共享內(nèi)容的管理,包括共享文件

11、夾的添加和取消,網(wǎng)絡(luò)服務(wù)的查看等。4.最后,是對所有本機(jī)網(wǎng)絡(luò)連接的監(jiān)控和統(tǒng)計(jì)。三系統(tǒng)分析與設(shè)計(jì)方案1信息管理系統(tǒng)的總體設(shè)計(jì)要點(diǎn) 1.本系統(tǒng)以實(shí)用為主,實(shí)現(xiàn)的都是用戶最常用的功能,簡化了系統(tǒng)自帶的軟件的使用。2.本系統(tǒng)界面設(shè)計(jì)直觀,易用性強(qiáng)2系統(tǒng)各功能模塊(1)本機(jī)基本信息獲取使用了performancecounter和wmi等方式獲取系統(tǒng)信息,以及通過讀取注冊表讀取本機(jī)操作系統(tǒng)信息,通過線程的方式監(jiān)控系統(tǒng)性能。源碼:performancecounter pc = new performancecounter("memory", "available mbytes&

12、quot;); performancecounter cpu = new performancecounter("processor", "% processor time", "_total"); thread m_thread; dllimport("iphlpapi.dll") extern static public uint getiftable(byte piftable, ref uint pdwsize, bool border); public form1() new form2().show()

13、; initializecomponent(); registrykey rk; directoryentry root = new directoryentry("winnt:"); string strdomain = null, cpuid = null, meo = null; foreach (directoryentry domain in root.children) /枚舉工作組或域 strdomain = strdomain + " " + domain.name; managementclass mclass = new manage

14、mentclass("win32_processor"); managementobjectcollection mocollection = mclass.getinstances(); foreach (managementobject mobject in mocollection) cpuid += mobject"name".tostring() + " " mclass = new managementclass("win32_physicalmemory"); mocollection = mclas

15、s.getinstances(); foreach (managementobject mobject in mocollection) meo += mobject"capacity".tostring(); rk = registry.localmachine.opensubkey("softwaremicrosoftwindows ntcurrentversion"); label6.text = system.environment.machinename; label8.text = system.net.dns.gethostentry(&q

16、uot;localhost").hostname; label9.text = rk.getvalue("productname").tostring() + " " + rk.getvalue("currentversion").tostring() + "." + rk.getvalue("currentbuildnumber").tostring(); label10.text = strdomain; label11.text = cpuid; label12.text = m

17、eo + " 字節(jié)" progressbar1.maximum = (int)(float.parse(meo) / 1048576.0); m_thread = new thread(new threadstart(workr); m_thread.isbackground = true; m_thread.start(); managementclass mc = new managementclass("win32_networkadapterconfiguration"); managementobjectcollection moc = mc.

18、getinstances(); foreach (managementobject mo in moc) if (bool)mo"ipenabled" = true) combobox1.items.add(mo"description".tostring(); combobox1.enabled = true; mc = new managementclass("win32_service"); moc = mc.getinstances(); foreach (managementobject mo in moc) if (mo&

19、quot;startname".tostring() = "nt authoritynetworkservice") combobox2.items.add(mo"caption".tostring(); combobox2.enabled = true; mc.dispose(); moc.dispose(); maskedtextbox1.allowpromptasinput = false;private delegate void dfun(); private void workr() while (true) thread.slee

20、p(500); work(); private void work() if (gressbar1.invokerequired && gressbar2.invokerequired) try dfun df = new dfun(work); this.invoke(df); catch ; else gressbar1.value = (int)this.pc.nextvalue(); this.label13.text = gressbar1.value.tostring() + "mb / &q

21、uot; + gressbar1.maximum.tostring() + "mb" gressbar2.value = (int)cpu.nextvalue(); this.label16.text = datetime.now.tostring(); (2)網(wǎng)絡(luò)設(shè)置部分主要通過wmi獲取和設(shè)置本機(jī)網(wǎng)絡(luò)適配器的信息和設(shè)置,可以自動獲取當(dāng)前可用的適配器,同時(shí),能對不符合規(guī)范的的設(shè)置進(jìn)行提示。具體的源碼如下: private void combobox1_selectionchangecommitted(object sender, event

22、args e) managementobjectsearcher query = new managementobjectsearcher("select * from win32_networkadapterconfiguration where ipenabled = 'true'"); managementobjectcollection querycollection = query.get(); foreach (managementobject mo in querycollection) if (mo"description"

23、;.tostring() = combobox1.text) string ipad = (string)mo"ipaddress" label23.text = ipad0; string subnets = (string)mo"ipsubnet" label24.text = subnets0; string defaultgateways = (string)mo"defaultipgateway" if (defaultgateways != null) label27.text = defaultgateways0; el

24、se label27.text = "" label26.text = mo"macaddress".tostring(); string dns = (string)mo"dnsserversearchorder" if (dns != null) label28.text = dns0; else if (dns = null) label29.text = "" else if (dns.length = 2) label29.text = dns1; else label29.text = "&q

25、uot; /* private void button3_click(object sender, eventargs e) string mac = maskedtextbox5.text.split(':'); string pstr = "0-9a-fa-f+$" string ma="" ; for (int n = 0; n < 5; n+) if (!regex.ismatch(macn,pstr) messagebox.show("mac地址為16進(jìn)制,即00ff", "錯誤")

26、; goto l1; else ma += macn+":" ma = ma.substring(0, ma.length - 1); managementclass mc = new managementclass("win32_networkadapterconfiguration"); managementobjectcollection moc = mc.getinstances(); foreach (managementobject mo in moc) if (bool)mo"ipenabled") if (mo&quo

27、t;description".tostring() = combobox1.text) managementbaseobject newmac = mo.getmethodparameters("setmacaddress"); newmac"macaddress" = new string ma ; managementbaseobject setmac = mo.invokemethod("setmacaddress", newmac, null); label26.text = mo"macaddress&q

28、uot;.tostring(); mc.dispose(); l1: ; */ private void button2_click(object sender, eventargs e) string pstr = "0 .0 .0 .0" string gatestr = "", dnsstr = "", dnsbstr = "" bool gat, dn, dnb; gat = false; dn = false; dnb = false; string gate = maskedtextbox6.text.

29、split('.'); string dns = maskedtextbox7.text.split('.'); string dnsb = maskedtextbox2.text.split('.'); if (!maskedtextbox6.text.equals(pstr) for (int n = 0; n < 4; n+) if (int.parse(gaten) > 255 | int.parse(gaten) < 0) messagebox.show("ip數(shù)值不對!數(shù)值為1255", &quo

30、t;錯誤"); goto l4; else gatestr += (gaten.trim() + "."); gatestr = gatestr.substring(0, gatestr.length - 1); gat = true; if (!maskedtextbox7.text.equals(pstr) for (int n = 0; n < 4; n+) if (int.parse(dnsn) > 255 | int.parse(gaten) < 0) messagebox.show("ip數(shù)值不對!數(shù)值為1255"

31、, "錯誤"); goto l4; for (int i = 0; i <= 3; i+) dnsstr += (dnsi.trim() + "."); dnsstr = dnsstr.substring(0, dnsstr.length - 1); dn = true; if (!maskedtextbox2.text.equals(pstr) for (int n = 0; n < 4; n+) if (int.parse(dnsbn) > 255 | int.parse(gaten) < 0) messagebox.show

32、("ip數(shù)值不對!數(shù)值為1255", "錯誤"); goto l4; for (int i = 0; i <= 3; i+) dnsbstr += (dnsbi.trim() + "."); dnsbstr = dnsbstr.substring(0, dnsbstr.length - 1); dnb = true; managementclass mc = new managementclass("win32_networkadapterconfiguration"); managementobjectco

33、llection moc = mc.getinstances(); foreach (managementobject mo in moc) if (bool)mo"ipenabled") if (mo"description".tostring() = combobox1.text) if (gat = true) managementbaseobject newgate = mo.getmethodparameters("setgateways"); newgate"defaultipgateway" = ne

34、w string gatestr ; managementbaseobject setgate = mo.invokemethod("setgateways", newgate, null); label27.text = mo"defaultipgateway".tostring(); if (dn = true) string temp = (string)mo"dnsserversearchorder" managementbaseobject newdns = mo.getmethodparameters("setd

35、nsserversearchorder"); newdns"dnsserversearchorder" = new string dnsstr, temp1 ; managementbaseobject setdns = mo.invokemethod("setdnsserversearchorder", newdns, null); temp = (string)mo"dnsserversearchorder" label28.text = temp0; if (dnb = true) string temp = (str

36、ing)mo"dnsserversearchorder" managementbaseobject newdnsb = mo.getmethodparameters("setdnsserversearchorder"); newdnsb"dnsserversearchorder" = new string temp1, dnsbstr ; managementbaseobject setdnsb = mo.invokemethod("setdnsserversearchorder", newdnsb, null);

37、 temp = (string)mo"dnsserversearchorder" label29.text = temp1; mo.dispose(); string str = maskedtextbox1.text.split('.'); string str1 = maskedtextbox4.text.split('.'); managementclass mc1 = new managementclass("win32_networkadapterconfiguration"); managementobject

38、collection moc1 = mc.getinstances(); if (255 < int.parse(str0) | 255 < int.parse(str1) | 255 < int.parse(str2) | 255 < int.parse(str3) | int.parse(str0) < 1 | int.parse(str1) < 0 | int.parse(str2) < 0 | int.parse(str3) < 1 | 255 < int.parse(str10) | 255 < int.parse(str1

39、1) | 255 < int.parse(str12) | 255 < int.parse(str13) | int.parse(str10) < 1 | int.parse(str11) < 0 | int.parse(str12) < 0 | int.parse(str13) < 0) messagebox.show("ip數(shù)值不對!數(shù)值為1255", "錯誤"); else foreach (managementobject mo in moc1) if (bool)mo"ipenabled"

40、) if (mo"description".tostring() = combobox1.text) string ipstr = "", substr = "" for (int i = 0; i <= 3; i+) ipstr += (stri.trim() + "."); for (int i = 0; i <= 3; i+) substr += (str1i.trim() + "."); ipstr = ipstr.substring(0, ipstr.length - 1); substr = substr.substring(0, substr.length - 1); managementbaseobject newip = mo.getmethodparameters("enablestatic

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論