網(wǎng)絡(luò)課程設(shè)計報告IP地址的合法性及子網(wǎng)判斷_第1頁
網(wǎng)絡(luò)課程設(shè)計報告IP地址的合法性及子網(wǎng)判斷_第2頁
網(wǎng)絡(luò)課程設(shè)計報告IP地址的合法性及子網(wǎng)判斷_第3頁
網(wǎng)絡(luò)課程設(shè)計報告IP地址的合法性及子網(wǎng)判斷_第4頁
網(wǎng)絡(luò)課程設(shè)計報告IP地址的合法性及子網(wǎng)判斷_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中國計量學院現(xiàn)代科技學院課程設(shè)計報告本課程設(shè)計名稱 ip地址的合法性及子網(wǎng)判斷 系 (部) 信息系 學 號 專 業(yè) 計算機 姓 名 班 級 101 指導教師 虞戟 2013 年 7 月 5 日課 程 設(shè) 計 報 告 目 錄一、設(shè)計的目的和要求11.目的1二、設(shè)計任務(wù)2三、設(shè)計方案分析2(一)總體設(shè)計2(二)模塊設(shè)計4四、調(diào)試與運行4(一) 調(diào)試中遇到的問題和解決辦法4(二) 運行說明5(三) 運行效果展示5五、設(shè)計體會與建議8附錄一:參考文獻8附錄二:源代碼9附 件:中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.1ip合法性和子網(wǎng)的判斷一、設(shè)計的目的和要求1.目的掌握ip地址的分類,準確理解子網(wǎng)、

2、掩碼的概念,確切地明了ip地址的合法格式。并判斷該地址是否屬于一個給定的子網(wǎng)。判斷ip地址屬于a b c那類網(wǎng)。2.要求根據(jù)后面介紹的ip地址與子網(wǎng)劃分的知識,編寫程序判斷ip地址的合法性及屬于子網(wǎng)。1) 以命令行形式運行: ipaddress subnet_address/mask ip_address其中,ipaddress為程序名,subnet_address為子網(wǎng)地址,mask為掩碼,ip_address為ip地址2) 判斷ip地址屬于a b c那類網(wǎng)。3)判斷subnet和ip_addr的合法性。在判斷ip地址合法性時要自行編寫代碼,不要使用任何inet函數(shù)。判斷時要考慮各種情況,全

3、面分析問題。4)判斷掩碼的合法性。譬如說mask的值為負數(shù)或者大與32,這時輸入的掩碼就不合法。 5)在ip地址合法,掩碼合法以及子網(wǎng)號也合法的前提下,判斷ip_addr是否屬于subnet。6)輸出命令行中的ip是否合法,掩碼是否合法,子網(wǎng)號碼是否合法(可適當給出不合法的原因)以及ip_addr是否屬于子網(wǎng)subnet。7)還可以判斷子網(wǎng)號,主機號全0,全1問題。中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.2二、設(shè)計任務(wù)通過程序正確的實現(xiàn)對ip地址合理性的判斷;當給定一ip地址時,本程序能實現(xiàn)對其ip地址、子網(wǎng)地址、掩碼的合法性做出正確的判斷,以及能判斷該ip地址是否屬于子網(wǎng),和ip地址屬于a

4、 b c哪類網(wǎng)絡(luò) 三、設(shè)計方案分析(一)總體設(shè)計1.分別輸入子網(wǎng)號、掩碼和ip地址。2.分別判斷子網(wǎng)號、掩碼和ip地址的基本格式是否合法。3.如果三者的基本格式都合法,才調(diào)用判定“ip地址是否為子網(wǎng)成員”的函數(shù)。該函數(shù)同時判別子網(wǎng)號與掩碼是否匹配,子網(wǎng)號為全0或全1,主機號為全0、全1.4.如果三者的基本格式都合法,判斷ip地址屬于a b c哪類網(wǎng) 中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.3 (程序流程圖-1)中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.4(二)模塊設(shè)計ip合法性及子網(wǎng)的判斷判斷模塊流量繪制模塊信息統(tǒng)計模塊界面設(shè)計判斷功能解析輸入的ip統(tǒng)計同一ip包數(shù)量(模塊流程圖-2)四、調(diào)

5、試與運行(一) 調(diào)試中遇到的問題和解決辦法1. 輸入命令行進行運行時,卻發(fā)現(xiàn)不管我們輸入的子網(wǎng)地址是否合法,運行結(jié)果都顯示:subnetisinvalid。我們分析了很久也找不到原因,無奈我們再一次尋求同學的幫助。他只是把整個程序大致瀏覽了一下就發(fā)現(xiàn)了錯誤,原來我們把charip15,charsubnetplusmask18,charsubnet18,chartempip15這幾個變量設(shè)置成了私有變量,導致后面的程序不能訪問。2. 輸入192.168.1.0/24 192.168.1.55 顯示出現(xiàn)不屬于該子網(wǎng),這是錯誤的。然后在(isuba&imask)中發(fā)現(xiàn)了問題所在。3. 出現(xiàn)很多的地方

6、少了,然后經(jīng)過我詳細的查找得以解決。4. 發(fā)現(xiàn)很多詞語沒有定義,然后經(jīng)過查找發(fā)現(xiàn)定義類時,單詞打錯了。中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.5(二) 運行說明程序編譯成功后,打開cmd,然后打入cd d:/kcsj/debug(程序生成的debug文件路徑下),再進行打入 testip(程序文件名)192.168.1.0/24 192.168.1.55(ipaddresssubnet_address/mask ip_address) ,然后會出現(xiàn)運行結(jié)果,查看ip地址ip地址、子網(wǎng)地址、掩碼的合法性,以及能判斷該ip地址是否屬于子網(wǎng),和ip地址屬于a b c那類網(wǎng)絡(luò)。(三) 運行效果展示(

7、1) 在命令提示窗口中輸入命令:testip 192.1/33 198.1.1;testip 256.1.1.0/24 256.1.1.55詳細的判斷ip地址、子網(wǎng)地址、掩碼的合法性中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.6(2) 在命令提示窗口中輸入命令:testip 19.16.1.0/24 19.16.1.55ip地址屬于該子網(wǎng),并且ip地址屬于a類網(wǎng)(3) 在命令提示窗口中輸入命令:testip 192.16.1.0/24 168.125.168.192ip地址不屬于該子網(wǎng),并且ip地址屬于b類網(wǎng)中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.7(4) 在命令提示窗口中輸入命令:testi

8、p 192.168.1.0/24 192.168.2.55ip地址不屬于該子網(wǎng),并且ip地址屬于c類網(wǎng)(5) 在命令提示窗口中輸入命令:testip 192.168.1.0/24 192.168.1.55ip地址屬于該子網(wǎng),并且ip地址屬于c類網(wǎng)中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.8五、設(shè)計體會與建議這次課程設(shè)計,我收獲了很多東西。通過上網(wǎng)和到圖書館查閱資料,我更加深入的學習了c語言,并利用所學知識設(shè)計,充分鍛煉,增強了我的程序設(shè)計能力,使我加深了對理論知識的理解和掌握。充分體會到了理論固然重要,如果沒有實踐去驗證,那也只是停在理論層面上,它的現(xiàn)實意義將無法得到體現(xiàn)。所以,這次課程設(shè)計是

9、理論與實踐的結(jié)合,增強了我在這方面的能力。通過這次課程設(shè)計,我更加深刻的理解了ip地址的合法性,ip地址與子網(wǎng)的從屬關(guān)系,子網(wǎng)與子網(wǎng)掩碼的關(guān)系。在判斷ip地址是否屬于一個子網(wǎng)時,我對ip地址的分類以及子網(wǎng)劃分有了更加深刻的理解。在這次課程設(shè)計的過程中,我遇到了很多問題,但經(jīng)過老師和同學的幫助,我解決了這些問題,并學到了很多知識,在此,對老師和同學表示真摯的感謝。附錄一:參考文獻1 魏權(quán)齡.數(shù)據(jù)包絡(luò)分析(dea)j.科學通報,2000,45(17):1793-1808.2 張堯?qū)W,郭國強,王曉春,趙艷標。計算機網(wǎng)絡(luò)與internet教程第2版。清華大學出版社,2006,11。3 謝希仁,計算機網(wǎng)

10、絡(luò)(第5版),電子工業(yè)出版社,2008-014 謝希仁,計算機網(wǎng)絡(luò)釋疑與習題解答,電子工業(yè)出版社,2011-045 譚浩強,c+程序設(shè)計,清華大學出版社,2004-06中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.9附錄二:源代碼#include #include #include #include #include #include using namespace std;/iptest類定義class iptestchar ip15; /用于存放ip地址char ip_temp15; /用于存放ip地址char subnet_mask18; /用于存放subnet_mask地址char sub

11、net18; /用于存放subnet地址 char subnet_temp18; /用于存放subnet地址int mask; /用于存放mask(1的個數(shù))bool maskisvalid; /用于判斷的個數(shù)是否合適,或是否與subnet匹配public:iptest(char *,char *); /自定義初始化類函數(shù)iptest(); /析構(gòu)函數(shù)bool ipisvalid(char *); /判斷ip是否合法bool subnetisvalid(char *); /判斷子網(wǎng)號subnet是否合法bool noillegalchar(char *); /ip,subnet地址中非法字符的

12、判斷bool maskismatsubnet(int,char *);/判斷mask與subnet是否匹配void alljudgment(); /判斷mask,subnet,ip的合法性問題 void print(); /判斷ip是否為子網(wǎng)成員,并輸出判斷結(jié)果void split(char *,int *); /把單個字符地址轉(zhuǎn)換為十進制數(shù)值型地址(含四段)int tobinary(int a); /十進制int型數(shù)據(jù)轉(zhuǎn)換為二進制int型數(shù)據(jù)char * tostring(int *a);/把二進制int型數(shù)據(jù)轉(zhuǎn)換為一個整體的二進制字符型數(shù)據(jù);/main主函數(shù)int main(int arg

13、c,char *argv) /自動讀取數(shù)據(jù)/cout目錄地址:argv0endl; /argv0表示iptest.exe的保存目錄地址中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.10coutsubnet_mask : argv1endl; /argv1表示第二個參數(shù),即subnet/mask coutip地址: argv2endlendl;/argv2表示第三個參數(shù),即ip/判斷段數(shù)是否輸入合法if(argc!=3) /argc表示輸入的參數(shù)個數(shù),無參數(shù)輸入時,其值為,因為默認argv0總是有的cout18)cout15)coutip 輸入非法!;system(pause);return 0;i

14、ptest test(argv1,argv2); /實例化類,傳入兩個參數(shù)test.alljudgment();/調(diào)用函數(shù),判斷mask,subnet,ip的合法性問題system(pause);/系統(tǒng)暫停return 0;/構(gòu)造函數(shù)中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.11iptest:iptest(char *subnet_mask,char *ip)maskisvalid=true; /設(shè)置maskisvalid默認為合法char temp2;/定義變量int i,len;len=strlen(subnet_mask); /*從subnet/mask中分離出subnet地址*/for

15、(i=0;isubneti=subnet_maski;this-subnet_tempi=subnet_maski;subnet_tempi=0; subneti=0; /*判斷mask是否為數(shù)值*/if(len-(i+1)0) /判斷mask是否為一/二位字節(jié)if(len-(i+1)=1) /表明mask是一位temp0=subnet_maski+1;/判斷字符是否為數(shù)值型字符if(!isdigit(temp0) /isdigit()為庫函數(shù),可以調(diào)用coutmask中含有非數(shù)字的非法字符,error!endl;maskisvalid=false; /mask不是數(shù)值,則設(shè)置為falseel

16、se if(len-3)=i) /表明mask是二位 temp0=subnet_maski+1; temp1=subnet_maski+2; if(!(isdigit(temp0) & isdigit(temp1) coutmask中含有非數(shù)字的非法字符,error!endl;中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.12 maskisvalid=false; mask=atoi(temp); /自動把數(shù)字字符轉(zhuǎn)換為對應(yīng)的十進制數(shù)值的函數(shù)if(mask32)maskisvalid=false;else /表明mask為空或字節(jié)超出范圍coutmask為空或超出范圍,error!subnet_m

17、ask,subnet_mask); /給subnet_mask賦值strcpy(this-ip,ip); /給ip賦值strcpy(this-ip_temp,ip); /給ip_temp賦值/判斷mask,subnet,ip的合法性問題void iptest:alljudgment()/設(shè)置標志subnet地址是否合法的bool型變量,并調(diào)用subnetisvalid函數(shù)判斷bool subnetisv=subnetisvalid(subnet_temp); /設(shè)置標記ip地址是否合法的bool型變量,并調(diào)用ipisvalid函數(shù)判斷bool ipisv=ipisvalid(ip_temp);

18、 /設(shè)置標記mask與subnet地址是否匹配的bool型變量,并調(diào)用maskismatsubnet函數(shù)判斷bool maskismatsub=maskismatsubnet(mask,subnet_temp);coutendl; /*判斷返回的值是否為真*/中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.13if(!maskisvalid) /表示返回的maskisvalid是falsecoutmask error!(mask為整數(shù)并在-32范圍內(nèi))endl;/*elsecoutmask合法!endl;*/*if(!maskismatsub)/表示返回的maskismatsub是falsecout

19、mask與subnet不匹配,error!endl;elsecoutmask與subnet匹配!endl;*/if(!subnetisv)/表示返回的subnetisv是falsecoutsubnet error!endl;/*elsecoutsubnet地址合法!endl;if(!ipisv)/表示返回的ipisv是falsecoutip地址非法!endl;中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.14elsecoutip地址合法!0 & nbsubnet0127 & mask8)/mask的值小于coutmask與subnet不匹配,error!=128 & nbsubnet0=191 &

20、 mask16) /mask的值小于coutmask與subnet不匹配,error!=192 & nbsubnet0=223 & mask24)中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.15/mask的值小于coutmask與subnet不匹配,error!endl;return false;/mask與subnet地址匹配return true;/把單個字符地址轉(zhuǎn)換為十進制數(shù)值型地址(含四段)void iptest:split(char *chaddr,int *addr)char ch= .;char *token,*dot4;int iplen=0;token=strtok(chadd

21、r,ch);while(token!=null)dotiplen=token;addriplen=atoi(dotiplen);/atoi()函數(shù)把字符數(shù)值轉(zhuǎn)換為int型數(shù)值iplen+;token=strtok(null,ch);/ip,subnet地址中非法字符的判斷bool iptest:noillegalchar(char *ch)int i,len=strlen(ch);for(i=0;i9 | chi-00)return false;中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.16return true;/判斷ip是否合法bool iptest:ipisvalid(char *ip)

22、char ch= .;char ip_one18;strcpy(ip_one,ip);char *token,*dot4;int iplen=0;/庫函數(shù)strtok(),以ch為界限來分段token=strtok(ip_one,ch);while(token!=null)dotiplen=token;iplen+;token=strtok(null,ch);/此時,第一個參數(shù)必須換為nullif(iplen!=4)cout地址ip的段數(shù)不是,error!endl;return false; int j,t=0;for(j=0;j=strlen(ip);j+)if(ipj=.)t+;if(t!

23、=3) 中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.17cout地址ip中的.不是,error!endl;return false; int i;for(i=0;i255)if(!noillegalchar(doti) /判斷含有非法字符cout地址ip中含有非數(shù)字的非法字符,error!255) /判斷數(shù)值溢出cout地址ip中含有不在-255間的數(shù)字,error!endl;return false; int flag=1;/首先設(shè)置為非法,即全for(i=0;iiplen;i+)if(atoi(doti)!=0)/含有非的字段flag=0; if(flag=1)cout地址ip全為全,err

24、or!endl;return false;中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.18flag=1;/首先設(shè)置為非法,即全for(i=0;iiplen;i+)if(atoi(doti)!=255)flag=0;if(flag=1) cout地址ip全為全,error!0&atoi(dot0)127) /a類ip地址j1=1; /直接從開始coutip地址屬于a類網(wǎng)endl;if(atoi(dot0)=127) /為的特殊號coutip地址ip網(wǎng)絡(luò)號為!,error!=128&atoi(dot0)=191) /b類ip地址j1=2;coutip地址屬于b類網(wǎng)=192&atoi(dot0)=22

25、3) /c類ip地址j1=3;coutip地址屬于c類網(wǎng)223&atoi(dot0)255)cout請重新輸入ip地址ip,僅限于a,b和c類ip地址,error!endl;return false;if(atoi(dot0)=255) coutip地址ip網(wǎng)絡(luò)號全為1,error!endl;return false;j2=j1; /j1用于判斷全情況,j1用于判斷全情況的起始下標int flag=1;/首先設(shè)置為非法,即主機號全 for(i=j1;iiplen;i+)if(atoi(doti)!=0) flag=0; flag=1;/首先設(shè)置為非法,即全 for(i=j2;iiplen;i+

26、) if(atoi(doti)!=255) 中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.20flag=0; if(flag=1) coutip地址ip的主機號全,error!endl; return false;return true;/判斷子網(wǎng)號subnet是否合法bool iptest:subnetisvalid(char *subnet)if(!ipisvalid(subnet) /調(diào)用判斷ip的函數(shù)ipisvalid()進行判斷return false;return true;/判斷ip是否為子網(wǎng)成員,并輸出判斷結(jié)果void iptest:print() char subnet_one1

27、5,ip_one15; int nbip4,nbsubnet4,i;strcpy(subnet_one,subnet); /把subnet地址復制給subnet_onestrcpy(ip_one,ip); /把ipt地址復制給ip_one/split()函數(shù)把字符型的地址轉(zhuǎn)換為四段int型的地址split(subnet_one,nbsubnet); /用subnet_one而非subnet是為了保護subnet地址中國計量學院現(xiàn)代科技學院課程設(shè)計報告 p.21不被破壞split(ip_one,nbip);for(i=0;i4;i+) nbipi=tobinary(nbipi);/將分離出來的十

28、進制轉(zhuǎn)換為二進制nbsubneti=tobinary(nbsubneti); char *cbip=new char33; char *cbsubnet=new char33; cbip=tostring(nbip);/將二進制數(shù)組轉(zhuǎn)換為位的二進制字符指針 cbsubnet=tostring(nbsubnet); for(i=0;imask;i+) if(cbipi!=cbsubneti) coutendlip地址:ip不屬于subnet這一子網(wǎng)endl; /system(pause); return; coutendlip地址:ip屬于subnet這一子網(wǎng)endl; /system(pause);/十進制int型數(shù)據(jù)轉(zhuǎn)換為二進制int型數(shù)據(jù)int iptest: tobinary(int a)/將十進制數(shù)轉(zhuǎn)換為二進制數(shù) if(a/2=0) return a%2; return a%2+tobinary(a/2)*10; /遞

溫馨提示

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

評論

0/150

提交評論