IP地址合法性判斷及子網(wǎng)檢測大學(xué)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁
IP地址合法性判斷及子網(wǎng)檢測大學(xué)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁
IP地址合法性判斷及子網(wǎng)檢測大學(xué)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁
IP地址合法性判斷及子網(wǎng)檢測大學(xué)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁
IP地址合法性判斷及子網(wǎng)檢測大學(xué)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、四川理工學(xué)院實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱IP地址合法性判斷及子網(wǎng)檢驗(yàn)課程名稱計(jì)算機(jī)科學(xué)與技術(shù)姓名 成績班級 學(xué)號日期 2013年1月 地點(diǎn)計(jì)算機(jī)學(xué)院一.實(shí)驗(yàn)?zāi)康谋驹O(shè)計(jì)要求編輯寫程序,判斷一個(gè)ip地址是否合法,并判斷該地址是否屬于一個(gè)給定子網(wǎng),從而考察讀者是否對ip地址概念及其子網(wǎng)劃分有非常清楚的認(rèn)識。1加深對IP地址及subnet的認(rèn)識;2. 了解IP地址的劃分;3. 了解subnet的作用和產(chǎn)生因素,subnet的劃分;4. 實(shí)際操作編寫規(guī)則,匹配 IP和subnet ,加深理解2 .設(shè)計(jì)要求在掌握ip地址表示方法及子網(wǎng)劃分方法的基礎(chǔ)上,按如下要求完成程序。1: 命令格式:ip_test subnet/

2、mask ip_addr其中,ip_test為程序名;subnet為子網(wǎng)號,mask是一個(gè)數(shù)值,代表子網(wǎng)掩碼連續(xù)1的個(gè)數(shù),ip_addr是要測試的ip地址。2:判斷subnet和ip_addr的合法性。在判斷ip地址合法性時(shí)要自行編代碼,不要使用任何inet函數(shù)。判斷時(shí)要考慮全面。3:判斷掩碼的合法性。4:在ip地址合法的前提下,判斷ip_addr是否屬于子網(wǎng)subnet。5:輸出命令行中的ip是否合法,掩碼是否合法,以及ip_addr是否屬于子網(wǎng) subnet.3 .實(shí)驗(yàn)環(huán)境(軟件、硬件及條件)1 .軟件操作系統(tǒng): Windows xp (Windows NT以上版本皆可)編程環(huán)境:Micr

3、osoft Visual Studio 2008 (兼容 MSVS2005,亦可使用 VC6.0 等)編程語言: C+測試環(huán)境:MS-DOS2硬件現(xiàn)階段常見PC四 . 實(shí) 驗(yàn)方法Part 1 實(shí)驗(yàn)原理我們說過因特網(wǎng)是把全世界的無數(shù)個(gè)網(wǎng)絡(luò)連接起來的一個(gè)龐大的網(wǎng)間網(wǎng),每個(gè)網(wǎng)絡(luò)中的計(jì)算機(jī)通過其自身的 IP 地址而被唯一標(biāo)識的,據(jù)此我們也可以設(shè)想,在 Internet 上這個(gè)龐大的網(wǎng)間網(wǎng)中,每個(gè)網(wǎng)絡(luò)也有自己的標(biāo)識符。我們把計(jì)算機(jī)的 IP 地址也分成兩部分,分別為網(wǎng)絡(luò)標(biāo)識和主機(jī)標(biāo)識。同一個(gè)物理網(wǎng)絡(luò)上的所有主機(jī)都用同一個(gè)網(wǎng)絡(luò)標(biāo)識,網(wǎng)絡(luò)上的一個(gè)主機(jī)(包括網(wǎng)絡(luò)上工作站、服務(wù)器和路由器等)都有一個(gè)主機(jī)標(biāo)識與其對

4、應(yīng) IP 地址的 4 個(gè)字節(jié)劃分為 2個(gè)部分,一部分用以標(biāo)明具體的網(wǎng)絡(luò)段,即網(wǎng)絡(luò)標(biāo)識;另一部分用以標(biāo)明具體的節(jié)點(diǎn),即主機(jī)標(biāo)識,也就是說某個(gè)網(wǎng)絡(luò)中的特定的計(jì)算機(jī)號碼。另一方面,只有在一個(gè)網(wǎng)絡(luò)號下的計(jì)算機(jī)之間才能直接”互通,不同網(wǎng)絡(luò)號的計(jì)算機(jī)要通過網(wǎng)關(guān)(Gateway)才能互通。但這樣的劃分在某些情況下顯得并十分不靈活。為此IP 網(wǎng)絡(luò)還允許劃分成更小的網(wǎng)絡(luò),稱為子網(wǎng)(Subnet ) ,這樣就產(chǎn)生了子網(wǎng)掩碼1. IP 的尋址規(guī)則(1) .ip 分類規(guī)則a、 網(wǎng)絡(luò)地址必須唯一。b、網(wǎng)絡(luò)標(biāo)識不能以數(shù)字127開頭。在A類地址的第一位為0,數(shù)字127保留 給內(nèi)部回送函數(shù)。B類地址的前兩位為10; C類地址

5、的前三位為110; D類地址的 前四位為 1110 ; E 類地址的前五位為 11110 。c 、 網(wǎng)絡(luò)標(biāo)識的第一個(gè)字節(jié)不能為 255。數(shù)字 255 作為廣播地址。d、 網(wǎng)絡(luò)標(biāo)識的第一個(gè)字節(jié)不能為“0”,“0”表示該地址是本地主機(jī),不能傳送。e、不合法的IP地址類型:123.2.1123.23$.2.12. 主機(jī)尋址規(guī)則a、主機(jī)標(biāo)識在同一網(wǎng)絡(luò)內(nèi)必須是唯一的。b、主機(jī)標(biāo)識的各個(gè)位不能都為“ 1”,如果所有位都為“ 1”,則該機(jī)地址是廣播地址,而非主機(jī)的地址c、主機(jī)標(biāo)識的各個(gè)位不能都為“ 0”,如果各個(gè)位都為“ 0”,則表示“只有 這個(gè)網(wǎng)絡(luò)”,而這個(gè)網(wǎng)絡(luò)上沒有任何主機(jī)。3.確定子網(wǎng)掩碼數(shù)用于子網(wǎng)掩

6、碼的位數(shù)決定于可能的子網(wǎng)數(shù)目和每個(gè)子網(wǎng)的主機(jī)數(shù)目。在定義 子網(wǎng)掩碼前,必須弄清楚本來使用的子網(wǎng)數(shù)和主機(jī)數(shù)目。定義子網(wǎng)掩碼的步驟為:a、確定哪些組地址歸我們使用。比如我們申請到的網(wǎng)絡(luò)號為“128B類IP地址,網(wǎng)絡(luò)標(biāo)識為“ 128.73,主機(jī)標(biāo)識為“ a.b”。b、根據(jù)我們現(xiàn)在所需的子網(wǎng)數(shù)以及將來可能擴(kuò)充到的子網(wǎng)數(shù),用宿主機(jī)的一 些位來定義子網(wǎng)掩碼。比如我們現(xiàn)在需要12個(gè)子網(wǎng),將來可能需要 16個(gè)。用第三個(gè)字節(jié)的前四位確定子網(wǎng)掩碼。前四位都置為“1”,即第三個(gè)字節(jié)為“,這個(gè)數(shù)我們暫且稱作新的二進(jìn)制子網(wǎng)掩碼。c、把對應(yīng)初始網(wǎng)絡(luò)的各個(gè)位都置為“ 1”,即前兩個(gè)字節(jié)都置為“ 1”,第四 個(gè)字節(jié)都置為“0

7、”d、把這個(gè)數(shù)轉(zhuǎn)化為間斷十進(jìn)制形式為:“ 255.255.240.0 ”這個(gè)數(shù)為該網(wǎng)絡(luò) 的子網(wǎng)掩碼。4.IP掩碼的標(biāo)注A、無子網(wǎng)的標(biāo)注法B、有子網(wǎng)的標(biāo)注法有子網(wǎng)時(shí),一定要二者配對出現(xiàn)。以C類地址為例。IP地址中的前3個(gè)字節(jié)表示網(wǎng)絡(luò)號,后一個(gè)字節(jié)既表明子網(wǎng)號,又說明主機(jī)號,還說明兩個(gè)IP地址是否屬于一個(gè)網(wǎng)段。如果屬于同一網(wǎng)絡(luò)區(qū)間,這兩個(gè)地址間的信息交換就不通過路由 器。如果不屬同一網(wǎng)絡(luò)區(qū)間,也就是子網(wǎng)號不同,兩個(gè)地址的信息交換就要通過 路由器進(jìn)行。例如:假設(shè) maskwe為27,; 2 Part 2具體實(shí)現(xiàn)通過以上的原理,我們就知道了在檢驗(yàn)IP地址和子網(wǎng)檢驗(yàn)時(shí)應(yīng)該明確的問題, 關(guān)鍵的兩點(diǎn)就是把輸

8、入的IP分解成各段,然后判斷子網(wǎng)號,掩碼和 ip地址的基 本格式是否合法,其次:如果三者的基本格式都合法,才調(diào)用斷定, ip地址是否為子網(wǎng)成員, 的函數(shù)。該函數(shù)同時(shí)判別子網(wǎng)號與掩碼是否匹配,子網(wǎng)號為全0或全1,主機(jī)號為全0、全1。1.實(shí)現(xiàn)流程制定規(guī)則分別判斷子網(wǎng)掩碼2.編程本部分的編程的主要目的是算法的實(shí)現(xiàn),主要的方法是C+”字符串處理(1)類設(shè)計(jì)a.屬性char ip15;/用于存放ip地址char ip_Temp15; / 用于存放 ip 地址char subnet_mask18; / 用于存放 subnet_mask 地址char subnet18; 用于存放 subnet 地址char

9、 subnet_Temp18; / 用于存放 subnet 地址int mask; /用于存放mask(1的個(gè)數(shù))bool maskIsValid;用于判斷的個(gè)數(shù)是否合適,或是否與subnet匹配b.方法構(gòu)造函數(shù),析構(gòu)函數(shù):ipTest(char *,char *);/自定義初始化類函數(shù)ipTest(); /析構(gòu)函數(shù)主判斷函數(shù)(即主要的方法):void AllJudgment(); 判斷 mask,subnet,ip的合法性問題bool ipIsValid(char *); 判斷 ip 是否合法BoolsubnetIsValid(char *);boolNoIllegalChar(char *

10、);bool maskIsMatSubnet(int,char *);/判斷子網(wǎng)號subnet是否合法/ip,subnet地址中非法字符的判斷判斷mask與subnet是否匹配工具函數(shù):void print(); 判斷ip是否為子網(wǎng)成員,并輸出判斷結(jié)果void split(char *,int *);把單個(gè)字符地址轉(zhuǎn)換為十進(jìn)制數(shù)值型地址(含四段)Int toBinary(int a);/十進(jìn)制int型數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制int型數(shù)據(jù)char * toString(int *a); / 把二進(jìn)制int型數(shù)據(jù)轉(zhuǎn)換為一個(gè)整體的二進(jìn)制字符型數(shù)據(jù)(2)主函數(shù)int main(int argc,char *a

11、rgv)函數(shù)1 .獲取參數(shù)2 .簡單判斷參數(shù)格式(長度)3 .若是正常參數(shù),實(shí)例化ipTest類4 .調(diào)用主判斷函數(shù)void AllJudgment() 判斷5 .輸出結(jié)果(3)程序流程(4)頭文件#include #include #include #include #include #include using namespace std;5 .實(shí)驗(yàn)分析及測試本部分測試了正常輸入和非法輸入時(shí),程序?qū)斎氲呐袛啵幊痰沫h(huán)境為VS2008,在解決方案文彳夾下面的Debug文件夾里面生成可執(zhí)行文件;運(yùn)行MS-DOS進(jìn)入Debug文件夾進(jìn)行測試。1 .算法正確性檢測(1)用正確格式和合法的數(shù)據(jù)的輸

12、入,測試 Mask和IP的匹配Mask:15 和 16結(jié)果截圖:H &WindDwiten2VcniLMr - pteA iMlG,13.12/1612&14&1 1 C:MpfcstMJEbugiipText 12B _17fc _3Jl-12Zl 128Miimc宅i 12S.l%i33.1215Ep坤源:L2t.mr33.U不法.箴 呼官界 工鉀 法訕地八X Tetr址任 小治ft窗 c E di :r M弋1C = MbreiM)elMiiIilt 12W-L9fe . JI. 12X16 n卸.19k33.llkulHet-_B*fllt 1 烈.iOlL工/nLu:iill :12

13、8.1%,33.11IF歸Jlbl/ J2 33JL1 屈 1 Ilk.m.Jl.llS 廣回 法再面試旌續(xù), (2)用正確格式和合法的數(shù)據(jù)的輸入,測試主網(wǎng)和子網(wǎng)的匹配Mask: 18所以可知:0010 0001.0000 11002 JJ位相于,得:00M0000 0000.0000 0000n 2位相于,得:010111 1111.0001 0001結(jié)果為不匹配。截圖:0010 0001.0000 11002寸位相于,得:00M0000 0000.0000 0000。2位相于,得:000011 1111.0001 0001結(jié)果為匹配。截圖:補(bǔ)充說明:ii)考慮(2)2 .輸入合法性測試本實(shí)

14、驗(yàn)程序規(guī)定輸入的標(biāo)準(zhǔn)參數(shù)輸入,其中:X為0-255的十進(jìn)制整數(shù),mask為0-32的十進(jìn)制整數(shù),兩個(gè)IP地址中間用空格分開,IP地址的為4段, 每一段都用 “.”分開,IP地址中允許出現(xiàn)空格或其他字符(1)輸入的IP地址中含有非法字符測試數(shù)據(jù):a2子網(wǎng)IP: 12eMask : 1h結(jié)果截圖:(2)輸入的IP地址段數(shù)不正確測試數(shù)據(jù):主網(wǎng)IP : 128.33.12子網(wǎng) IP: 126.196.Mask : 18結(jié)果截圖:(3)沒有輸入mask.11結(jié)果截圖:(4)輸入mask超出合法范圍Mask:35結(jié)果截圖:H 二制VKdawt1爐0ri3趴!ni4N - iplrst 12.1.1.12/

15、35& n 帛Mm*,M*k J1 洲,1 仃箱+ 1M5詁地址 21S8.1H n.ll5, i型 入白隗 址法近(5)輸入IP超出合法范圍Mask:25結(jié)果截圖:0,:州indowmkiystEi捫丁乩1 ofrtt 5S5.196 二- I求& 1割劈加 MI:C八如除“ 5554?6.31,12/25 1M 9W.K.11Dubnttjuok 55519633el2/251|i地tl :第dl期膽55.整.招.煌由雷市二曲T再 非審二的G班.典1山曾首木池-蛔而苗戢生.EFM”(6)特殊的IP地址測試數(shù)據(jù):主網(wǎng)IP : 0.0.0.0Mask:0結(jié)果截圖:測試數(shù)據(jù):主網(wǎng)IP : 0.0

16、.0.0Mask:0結(jié)果截圖:pSipIvKi735 3UL 工51卬地升 =,5,255 .255越址(LHM 單全為全*班址瞽5255 m255全為 至1 rrprTi4k言法!i* k subniit m配euImi et二寸匚非去6 .實(shí)驗(yàn)結(jié)論本實(shí)驗(yàn)根據(jù)現(xiàn)在通用的IP地址分配使用規(guī)則,設(shè)計(jì)實(shí)驗(yàn)算法,運(yùn)用C+存符轉(zhuǎn)函數(shù)處理,程序?qū)崿F(xiàn)了基本要求的功能,考慮到了多方面的因素;另一 方面,設(shè)計(jì)之初的思路把此程序定位在接口工具程序,所以省略掉UI的設(shè)計(jì),考慮到了擴(kuò)展性的方面需要,程序提供簡單、方便的接口和較為簡單參數(shù), 方便擴(kuò)展使用。仍存在的問題:數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)不夠清晰簡練和方便使用,可讀性不太

17、好;主函數(shù)流程存在一定的問題,理路不是很清晰,主要是類的各個(gè)方法的設(shè)計(jì) 沒有總體考慮,設(shè)計(jì)之初沒有考慮,在需要時(shí)才加,導(dǎo)致程序結(jié)構(gòu)有點(diǎn)亂, 不易閱讀和檢查。7 .附錄源代碼說明:源文件語言:C+文件數(shù):1源文件名:ipTest.cpp#include #include #include #include #include #include using namespace std; /ipTest 類定義 class ipTestchar ip15;/用于存放ip地址char ip_Temp15; / 用于存放 ip 地址char subnet_mask18; / 用于存放 subnet_mas

18、k 地址char subnet18; / 用于存放 subnet 地址char subnet_Temp18; / 用于存放 subnet 地址int mask; / 用于存放 mask(1 的個(gè)數(shù) )bool maskIsValid; / 用于判斷的個(gè)數(shù)是否合適,或是否與subnet 匹配public:ipTest(char *,char *);/ 自定義初始化類函數(shù)ipTest();/ 析構(gòu)函數(shù)bool ipIsValid(char *); / 判斷 ip 是否合法bool subnetIsValid(char *); / 判斷子網(wǎng)號subnet 是否合法bool NoIllegalChar

19、(char *); /ip,subnet 地址中非法字符的判斷bool maskIsMatSubnet(int,char *);/ 判斷 mask 與subnet 是否匹配 void AllJudgment(); / 判斷 mask,subnet,ip 的合法性問題 void print();/ 判斷 ip 是否為子網(wǎng)成員,并輸出判斷結(jié)果void split(char *,int *);/ 把單個(gè)字符地址轉(zhuǎn)換為十進(jìn)制數(shù)值型地址(含四段)int toBinary(int a); / 十進(jìn)制 int 型數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制 int 型數(shù)據(jù) char * toString(int *a);/ 把二進(jìn)制

20、int 型數(shù)據(jù)轉(zhuǎn)換為一個(gè)整體的二進(jìn)制字符型數(shù)據(jù);/main 主函數(shù) int main(int argc,char *argv) / 自動(dòng)讀取數(shù)據(jù) /cout 目錄地址 :argv0endl;/argv0 表示 ipTest.exe 的保存目錄地址coutsubnet_mask :argv1endl;/argv1 表示第二個(gè)參數(shù),即 subnet/maskcoutip 地址 : argv2endlendl;/argv2表示第三個(gè)參數(shù),即 ip/ 判斷段數(shù)是否輸入合法if(argc!=3) /argc 表示輸入的參數(shù)個(gè)數(shù),無參數(shù)輸入時(shí),其值為 , 因?yàn)槟J(rèn) argv0 總是有的 cout18)co

21、ut15) coutip 輸入非法! ;system(pause);return 0;ipTest test(argv1,argv2); / 實(shí)例化類,傳入兩個(gè)參數(shù)test.AllJudgment();/ 調(diào)用函數(shù),判斷mask,subnet,ip 的合法性問題system(pause);/ 系統(tǒng)暫停 return 0;/ 構(gòu)造函數(shù)ipTest:ipTest(char *subnet_mask,char *ip)maskIsValid=true; / 設(shè)置 maskIsValid 默認(rèn)為合法char temp2;/ 定義變量int i,len;len=strlen(subnet_mask);/

22、* 從 subnet/mask 中分離出 subnet 地址 */for(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!

23、endl;maskIsValid=false; /mask 不是數(shù)值,則設(shè)置為falseelse if(len-3)=i)/ 表明 mask 是二位temp0=subnet_maski+1;temp1=subnet_maski+2;if(!(isdigit(temp0) & isdigit(temp1)coutmask 中含有非數(shù)字的非法字符,error!endl;maskIsValid=false;mask=atoi(temp); / 自動(dòng)把數(shù)字字符轉(zhuǎn)換為對應(yīng)的十進(jìn)制數(shù)值的函數(shù)if(mask32)maskIsValid=false;else / 表明 mask 為空或字節(jié)超出范圍coutma

24、sk 為空或超出范圍 ,error!subnet_mask,subnet_mask); / 給subnet_mask 賦值strcpy(this-ip,ip); 給ip 賦值strcpy(this-ip_Temp,ip); / 給 ip_temp 賦值/ 判斷 mask,subnet,ip 的合法性問題void ipTest:AllJudgment()/ 設(shè)置標(biāo)志 subnet 地址是否合法的 bool 型變量 ,并調(diào)用 subnetIsValid 函數(shù)判斷bool subnetIsV=subnetIsValid(subnet_Temp);/ 設(shè)置標(biāo)記 ip 地址是否合法的 bool 型變量,

25、并調(diào)用ipIsValid 函數(shù)判斷bool ipIsV=ipIsValid(ip_Temp);函數(shù)判斷/設(shè)置標(biāo)記mask與subnet地址是否匹配的bool型變量,并調(diào)用masklsMatSubnet bool maskIsMatSub=maskIsMatSubnet(mask,subnet_Temp);coutendl;/*判斷返回的值是否為真*/if(!maskIsValid)表示返回的maskIsValid是falsecoutmask 輸入非法! (mask 為整數(shù)并在 -32 范圍內(nèi) )endl;elsecoutmask 合法! endl;if(!maskIsMatSub)/ 表示返回

26、的 maskIsMatSub 是falsecoutmask 與 subnet 不匹配 ,error!endl;elsecoutmask 與 subnet 匹配 !endl;if(!subnetIsV)/表示返回的subnetlsV是falsecoutsubnet 地址非法! endl;elsecoutsubnet 地址合法! endl;if(!ipIsV)/表示返回的ipIsV是falsecoutip 地址非法! endl;elsecoutip 地址合法! 0 & nbsubnet0127 & mask8)/mask 的值小于coutmask 與 subnet 不匹配 ,error!=128

27、& nbsubnet0=191 & mask16)/mask 的值小于coutmask 與 subnet 不匹配 ,error!=192 & nbsubnet0=223 & mask24) /mask 的值小于coutmask 與 subnet 不匹配 ,error!endl;return false;/mask 與subnet地址匹配return true;/ 把單個(gè)字符地址轉(zhuǎn)換為十進(jìn)制數(shù)值型地址(含四段)void ipTest:split(char *chaddr,int *addr)char ch= .;char *token,*dot4;int iplen=0;token=strtok

28、(chaddr,ch);while(token!=NULL)dotiplen=token;int 型數(shù)值addriplen=atoi(dotiplen);/atoi() 函數(shù)把字符數(shù)值轉(zhuǎn)換為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;return true;/ 判斷 ip 是否合法bool ipTest:ipIsValid(char *ip)*把地址分為四段,保存

29、在 dot 中*/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í),第一個(gè)參數(shù)必須換為NULL/*判斷地址中的段數(shù) */if(iplen!=4)cout 地址 ip 的段數(shù)不是,error!endl;return false;/* 判斷地址中的 .是否正確 */in

30、t j,t=0;for(j=0;j=strlen(ip);j+) if(ipj=.)t+;if(t!=3)cout 地址 ip 中的 .不是 ,error!endl;return false;/*判斷地址是否含有非法字符,每段地址數(shù)值溢出*/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è)置為非法,即全

31、for(i=0;iiplen;i+)if(atoi(doti)!=0)/ 含有非的字段flag=0; if(flag=1)cout 地址 ip 全為全 ,error!endl;return false;flag=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;/ 直接從開始if(atoi(dot0)=127) / 為的特殊號coutip 地址 ip 網(wǎng)絡(luò)號為 !,error!=128&atoi(dot

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

33、;return false;flag=1;/ 首先設(shè)置為非法,即全for(i=j2;iiplen;i+)if(atoi(doti)!=255)flag=0;if(flag=1)coutip 地址 ip 的主機(jī)號全 ,error!endl;return false; return true;/ 判斷子網(wǎng)號 subnet 是否合法bool ipTest:subnetIsValid(char *subnet)if(!ipIsValid(subnet) / 調(diào)用判斷 Ip 的函數(shù) ipIsValid() 進(jìn)行判斷return false;return true;/ 判斷 ip 是否為子網(wǎng)成員,并輸出判

34、斷結(jié)果void ipTest:print()char subnet_one15,ip_one15;int nbip4,nbsubnet4,i;strcpy(subnet_one,subnet);把 subnet 地址復(fù)制給 subnet_onestrcpy(ip_one,ip); / 把ipt 地址復(fù)制給 ip_one/split() 函數(shù)把字符型的地址轉(zhuǎn)換為四段 int 型的地址split(subnet_one,nbsubnet); / 用 subnet_one 而非 subnet 是為了保護(hù)subnet 地址不被破壞split(ip_one,nbip);for(i=0;i4;i+)nbipi=toBinary(nbipi);/ 將分離出來的十進(jìn)制轉(zhuǎn)換為二進(jìn)制nbsubneti=toBinary(nbsubneti);char *cbip=new char33;char *cbsubnet=new char33;cbip=toString(nbip);/ 將二進(jìn)制數(shù)組轉(zhuǎn)換

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論