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

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)?zāi)康?加深對(duì)IP地址及subnet的認(rèn)識(shí);2了解IP地址的劃分;3. 了解subnet的作用和產(chǎn)生因素,subnet的劃分;4. 實(shí)際操作編寫(xiě)規(guī)則,匹配IP和subnet,加深理解實(shí)驗(yàn)環(huán)境(軟件、硬件及條件)1軟件操作系統(tǒng):Windows 7(Windows NT以上版本皆可)編程環(huán)境:Microsoft Visual Studio 2008(兼容MS VS2005,亦等)編程語(yǔ)言:C+測(cè)試環(huán)境: MS-DOS2硬件現(xiàn)階段常見(jiàn)PC實(shí)驗(yàn)方法Part 1 實(shí)驗(yàn)原理我們說(shuō)過(guò)因特網(wǎng)是把全世界的無(wú)數(shù)個(gè)網(wǎng)絡(luò)連接起來(lái)的一個(gè)龐大的網(wǎng)間網(wǎng),每個(gè)網(wǎng)絡(luò)中的計(jì)算機(jī)通過(guò)其自身的IP地址而被唯一標(biāo)識(shí)的,據(jù)此我們也可以

2、設(shè)想,在Internet上這個(gè)龐大的網(wǎng)間網(wǎng)中,每個(gè)網(wǎng)絡(luò)也有自己的標(biāo)識(shí)符。我們把計(jì)算機(jī)的IP地址也分成兩部分,分別為網(wǎng)絡(luò)標(biāo)識(shí)和主機(jī)標(biāo)識(shí)。同一個(gè)物理網(wǎng)絡(luò)上的所有主機(jī)都用同一個(gè)網(wǎng)絡(luò)標(biāo)識(shí),網(wǎng)絡(luò)上的一個(gè)主機(jī)(包括網(wǎng)絡(luò)上工作站、服務(wù)器和路由器等)都有一個(gè)主機(jī)標(biāo)識(shí)與其對(duì)應(yīng)IP地址的4個(gè)字節(jié)劃分為2個(gè)部分,一部分用以標(biāo)明具體的網(wǎng)絡(luò)段,即網(wǎng)絡(luò)標(biāo)識(shí);另一部分用以標(biāo)明具體的節(jié)點(diǎn),即主機(jī)標(biāo)識(shí),也就是說(shuō)某個(gè)網(wǎng)絡(luò)中的特定的計(jì)算機(jī)號(hào)碼。另一方面,只有在一個(gè)網(wǎng)絡(luò)號(hào)下的計(jì)算機(jī)之間才能直接互通,不同網(wǎng)絡(luò)號(hào)的計(jì)算機(jī)要通過(guò)網(wǎng)關(guān)(Gateway)才能互通。但這樣的劃分在某些情況下顯得并十分不靈活。為此IP網(wǎng)絡(luò)還允許劃分成更小的網(wǎng)絡(luò),稱

3、為子網(wǎng)(Subnet),這樣就產(chǎn)生了子網(wǎng)掩碼1. IP的尋址規(guī)則 (1).網(wǎng)絡(luò)尋址規(guī)則 A、 網(wǎng)絡(luò)地址必須唯一。 B、 網(wǎng)絡(luò)標(biāo)識(shí)不能以數(shù)字127開(kāi)頭。在A類地址中,數(shù)字127保留給內(nèi)部回送函數(shù)。 C、 網(wǎng)絡(luò)標(biāo)識(shí)的第一個(gè)字節(jié)不能為255。數(shù)字255作為廣播地址。 D、 網(wǎng)絡(luò)標(biāo)識(shí)的第一個(gè)字節(jié)不能為“0”,“0”表示該地址是本地主機(jī),不能傳送。 2.主機(jī)尋址規(guī)則 A、主機(jī)標(biāo)識(shí)在同一網(wǎng)絡(luò)內(nèi)必須是唯一的。 B、主機(jī)標(biāo)識(shí)的各個(gè)位不能都為“1”,如果所有位都為“1”,則該機(jī)地址是廣播地址,而非主機(jī)的地址。 C、主機(jī)標(biāo)識(shí)的各個(gè)位不能都為“0”,如果各個(gè)位都為“0”,則表示“只有這個(gè)網(wǎng)絡(luò)”,而這個(gè)網(wǎng)絡(luò)上沒(méi)有任何

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

5、對(duì)應(yīng)初始網(wǎng)絡(luò)的各個(gè)位都置為“1”,即前兩個(gè)字節(jié)都置為“1”,第四個(gè)字節(jié)都置為“0”,則子網(wǎng)掩碼的間斷二進(jìn)制形式為:“11111111.11111111.11110000.00000000” D、把這個(gè)數(shù)轉(zhuǎn)化為間斷十進(jìn)制形式為:“255.255.240.0” 這個(gè)數(shù)為該網(wǎng)絡(luò)的子網(wǎng)掩碼。4.IP掩碼的標(biāo)注 A、無(wú)子網(wǎng)的標(biāo)注法 對(duì)無(wú)子網(wǎng)的IP地址,可寫(xiě)成主機(jī)號(hào)為0的掩碼。如IP地址210.73.140.5,掩碼為255.255.255.0,也可以缺省掩碼,只寫(xiě)IP地址。 B、有子網(wǎng)的標(biāo)注法 有子網(wǎng)時(shí),一定要二者配對(duì)出現(xiàn)。以C類地址為例。IP地址中的前3個(gè)字節(jié)表示網(wǎng)絡(luò)號(hào),后一個(gè)字節(jié)既表明子網(wǎng)號(hào),又說(shuō)明

6、主機(jī)號(hào),還說(shuō)明兩個(gè)IP地址是否屬于一個(gè)網(wǎng)段。如果屬于同一網(wǎng)絡(luò)區(qū)間,這兩個(gè)地址間的信息交換就不通過(guò)路由器。如果不屬同一網(wǎng)絡(luò)區(qū)間,也就是子網(wǎng)號(hào)不同,兩個(gè)地址的信息交換就要通過(guò)路由器進(jìn)行。例如:假設(shè)maskwe為27,對(duì)于IP地址為210.73.140.5的主機(jī)來(lái)說(shuō),其主機(jī)標(biāo)識(shí)為00000101,對(duì)于IP地址為210.73.140.16的主機(jī)來(lái)說(shuō)它的主機(jī)標(biāo)識(shí)為00010000,以上兩個(gè)主機(jī)標(biāo)識(shí)的前面三位全是000,說(shuō)明這兩個(gè)IP地址在同一個(gè)網(wǎng)絡(luò)區(qū)域中,這兩臺(tái)主機(jī)在交換信息時(shí)不需要通過(guò)路由器進(jìn)行;210.73.60.1的主機(jī)標(biāo)識(shí)為00000001,210.73.60.252的主機(jī)標(biāo)識(shí)為11111100

7、,這兩個(gè)主機(jī)標(biāo)識(shí)的前面三位000與011不同,說(shuō)明二者在不同的網(wǎng)絡(luò)區(qū)域,要交換信息需要通過(guò)路由器。其子網(wǎng)上主機(jī)號(hào)各為1和252。Part 2 具體實(shí)現(xiàn)通過(guò)以上的原理,我們就知道了在檢驗(yàn)IP地址和子網(wǎng)檢驗(yàn)時(shí)應(yīng)該明確的問(wèn)題,關(guān)鍵的兩點(diǎn)就是把輸入的IP(暫且不討論何種輸入形式,且假設(shè)為合法輸入)分解成各段,然后判斷其書(shū)否屬于另一IP的網(wǎng)絡(luò),其中的算法在上面已經(jīng)說(shuō)明實(shí)現(xiàn)流程制定規(guī)則設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)算法實(shí)現(xiàn)調(diào)試 測(cè)試數(shù)據(jù)分析編程本部分的編程的主要目的是算法的實(shí)現(xiàn),主要的方法是C+中字符串處理。(1)類設(shè)計(jì)a.屬性char ip15; /用于存放ip地址char ip_Temp15; /用于存放ip地址cha

8、r subnet_mask18; /用于存放subnet_mask地址char subnet18; /用于存放subnet地址char 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的合法性問(wèn)題bool ipIsValid(

9、char *); /判斷ip是否合法Bool subnetIsValid(char *); /判斷子網(wǎng)號(hào)subnet是否合法bool NoIllegalChar(char *); /ip,subnet地址中非法字符的判斷bool maskIsMatSubnet(int,char *);/判斷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 *

10、 toString(int *a);/把二進(jìn)制int型數(shù)據(jù)轉(zhuǎn)換為一個(gè)整體的二進(jìn)制字符型數(shù)據(jù) (2)主函數(shù)int main(int argc,char *argv) 函數(shù)1.獲取參數(shù) 2.簡(jiǎn)單判斷參數(shù)格式(長(zhǎng)度) 3.若是正常參數(shù),實(shí)例化 ipTest類 4.調(diào)用主判斷函數(shù)void AllJudgment() 判斷 5.輸出結(jié)果 (3)程序流程(4)頭文件#include #include #include #include #include #include using namespace std;實(shí)驗(yàn)分析及測(cè)試本部分測(cè)試了正常輸入和非法輸入時(shí),程序?qū)斎氲呐袛?,編程的環(huán)境為VS2008,在解

11、決方案文件夾下面的Debug文件夾里面生成可執(zhí)行文件;運(yùn)行MS-DOS,進(jìn)入Debug文件夾進(jìn)行測(cè)試。1.算法正確性檢測(cè)(1)用正確格式和合法的數(shù)據(jù)的輸入,測(cè)試Mask和IP的匹配 Mask:15和16分析:IP:128.196.33.12屬于B類IP地址,前16位位網(wǎng)絡(luò)段,后16位為主機(jī)段,所以Mask至少為16結(jié)果截圖:(2)用正確格式和合法的數(shù)據(jù)的輸入,測(cè)試主網(wǎng)和子網(wǎng)的匹配 Mask:18所以可知:IP:128.196.33.12 1000 0000.1100 0100.0010 0001.0000 1100 2位相于,得:00Mask:255.255.0.0 1111 1111.111

12、1 1111.0000 0000.0000 0000 2位相于,得:01IP:128.196.127.17 1000 0000.1000 0100.0111 1111.0001 0001結(jié)果為不匹配。截圖:IP:128.196.33.12 1000 0000.1100 0100.0010 0001.0000 1100 2位相于,得:00Mask:255.255.0.0 1111 1111.1111 1111.0000 0000.0000 0000 2位相于,得:00IP:128.196.63.17 1000 0000.1000 0100.0011 1111.0001 0001結(jié)果為匹配。截圖:

13、(3)補(bǔ)充說(shuō)明:i)主網(wǎng)和子網(wǎng)匹配的時(shí)候,實(shí)際上的與運(yùn)算的位數(shù)是Mask個(gè)數(shù),即Mask有多少,就相與前多少個(gè)位。而以上例子中可知,B類IP地址的子網(wǎng)掩碼為255.255.0.0,所以前8位全是1,所以無(wú)論IP是多少,相與結(jié)果都是1,即不用考慮網(wǎng)絡(luò)段,直接相與主機(jī)段的前n 段即可,n=(mask-所屬網(wǎng)絡(luò)分類的主機(jī)段位數(shù))。本測(cè)試?yán)又形?。ii)考慮(2)中的兩個(gè)3個(gè)IP地址可以發(fā)現(xiàn)當(dāng)主網(wǎng)IP為128.196.33.12,mask為18時(shí),IP和子網(wǎng)掩碼相與,主機(jī)號(hào)前兩位為00,所以可推出,子網(wǎng)IP的只需要主機(jī)段的前兩位為00,則都可以匹配,即子網(wǎng)IP的第3節(jié)(第17位到第24位)為00XX

14、 XXXX ,轉(zhuǎn)化為十進(jìn)制就是小于63的整數(shù)就可以匹配。2.輸入合法性測(cè)試本實(shí)驗(yàn)程序規(guī)定輸入的標(biāo)準(zhǔn)參數(shù)輸入 ,其中:X為0-255的十進(jìn)制整數(shù),mask為0-32的十進(jìn)制整數(shù),兩個(gè)IP地址中間用空格分開(kāi),IP地址的為4段,每一段都用 “.”分開(kāi),IP地址中允許出現(xiàn)空格或其他字符(1)輸入的IP地址中含有非法字符測(cè)試數(shù)據(jù): 主網(wǎng)IP:128.196.33.a2 子網(wǎng)IP:12e.196.127.17 Mask:1h結(jié)果截圖:(2)輸入的IP地址段數(shù)不正確 子網(wǎng)IP:126.196. Mask:18結(jié)果截圖:(3)沒(méi)有輸入mask.11 結(jié)果截圖: (4)輸入mask超出合法范圍 Mask:35結(jié)

15、果截圖:(5)輸入IP超出合法范圍 Mask:25結(jié)果截圖:(6)特殊的IP地址 Mask:0結(jié)果截圖: Mask:0結(jié)果截圖:實(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ò)展性的方面需要,程序提供簡(jiǎn)單、方便的接口和較為簡(jiǎn)單參數(shù),方便擴(kuò)展使用。仍存在的問(wèn)題:數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)不夠清晰簡(jiǎn)練和方便使用,可讀性不太好;主函數(shù)流程存在一定的問(wèn)題,理路不是很清晰,主要是類的各個(gè)方法的設(shè)計(jì)沒(méi)有總體考慮,設(shè)計(jì)之初沒(méi)有考慮,在需要時(shí)才加,導(dǎo)致

16、程序結(jié)構(gòu)有點(diǎn)亂,不易閱讀和檢查。附錄 源代碼說(shuō)明:源文件語(yǔ)言:C+文件數(shù):1源文件名:#include #include #include #include #include #include using namespace std;/ipTest類定義class ipTestchar ip15; /用于存放ip地址char ip_Temp15; /用于存放ip地址char subnet_mask18; /用于存放subnet_mask地址char subnet18; /用于存放subnet地址 char subnet_Temp18; /用于存放subnet地址int mask; /用于存放m

17、ask(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)號(hào)subnet是否合法bool NoIllegalChar(char *); /ip,subnet地址中非法字符的判斷bool maskIsMatSubnet(int,char *);/判斷mask與subnet是否匹配void AllJudgment(

18、); /判斷mask,subnet,ip的合法性問(wèn)題 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ù);/main主函數(shù)int main(int argc,char *argv) /自動(dòng)讀取數(shù)據(jù)coutsubnet_mask : argv1endl; /argv1表示第二個(gè)參數(shù),即subne

19、t/mask coutip地址: argv2endlendl;/argv2表示第三個(gè)參數(shù),即ip/判斷段數(shù)是否輸入合法if(argc!=3) /argc表示輸入的參數(shù)個(gè)數(shù),無(wú)參數(shù)輸入時(shí),其值為,因?yàn)槟J(rèn)argv0總是有的cout18)cout15)coutip 輸入非法!;system(pause);return 0;ipTest test(argv1,argv2); /實(shí)例化類,傳入兩個(gè)參數(shù)test.AllJudgment();/調(diào)用函數(shù),判斷mask,subnet,ip的合法性問(wèn)題system(pause);/系統(tǒng)暫停return 0;/構(gòu)造函數(shù)ipTest:ipTest(char *su

20、bnet_mask,char *ip)maskIsValid=true; /設(shè)置maskIsValid默認(rèn)為合法char temp2;/定義變量int i,len;len=strlen(subnet_mask); /*從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

21、=subnet_maski+1;/判斷字符是否為數(shù)值型字符if(!isdigit(temp0) /isdigit()為庫(kù)函數(shù),可以調(diào)用coutmask中含有非數(shù)字的非法字符,error!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; mas

22、k=atoi(temp); /自動(dòng)把數(shù)字字符轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)值的函數(shù)if(mask32)maskIsValid=false;else /表明mask為空或字節(jié)超出范圍coutmask為空或超出范圍,error!subnet_mask,subnet_mask); /給subnet_mask賦值strcpy(this-ip,ip); /給ip賦值strcpy(this-ip_Temp,ip); /給ip_temp賦值/判斷mask,subnet,ip的合法性問(wèn)題void ipTest:AllJudgment()/設(shè)置標(biāo)志subnet地址是否合法的bool型變量,并調(diào)用subnetIsValid

23、函數(shù)判斷bool subnetIsV=subnetIsValid(subnet_Temp); /設(shè)置標(biāo)記ip地址是否合法的bool型變量,并調(diào)用ipIsValid函數(shù)判斷bool ipIsV=ipIsValid(ip_Temp); /設(shè)置標(biāo)記mask與subnet地址是否匹配的bool型變量,并調(diào)用maskIsMatSubnet函數(shù)判斷bool maskIsMatSub=maskIsMatSubnet(mask,subnet_Temp);coutendl; /*判斷返回的值是否為真*/if(!maskIsValid) /表示返回的maskIsValid是falsecoutmask輸入非法!(m

24、ask為整數(shù)并在-32范圍內(nèi))endl;elsecoutmask合法!endl;if(!maskIsMatSub)/表示返回的maskIsMatSub是falsecoutmask與subnet不匹配,error!endl;elsecoutmask與subnet匹配!endl;if(!subnetIsV)/表示返回的subnetIsV是falsecoutsubnet地址非法!endl;elsecoutsubnet地址合法!endl;if(!ipIsV)/表示返回的ipIsV是falsecoutip地址非法!endl;elsecoutip地址合法!0 & nbsubnet0127 & mask8)

25、/mask的值小于coutmask與subnet不匹配,error!=128 & 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,*do

26、t4;int iplen=0;token=strtok(chaddr,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;return true;/判斷ip是否合法bool ipTest:ipIsValid

27、(char *ip)/*把地址分為四段,保存在dot中*/char ch= .;char ip_one18;strcpy(ip_one,ip);char *token,*dot4;int iplen=0;/庫(kù)函數(shù)strtok(),以ch為界限來(lái)分段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; /*判斷地址中的.

28、是否正確*/int 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è)置為非法,即全for(i

29、=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; /直接從開(kāi)始if(atoi(dot0)=127) /為的特殊號(hào)coutip地址ip網(wǎng)絡(luò)號(hào)為!,error!=128&atoi(dot0)=192&atoi(dot0)223&a

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

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

32、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);/將分離出來(lái)的十進(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)換為位的二進(jìn)制字符指針 cbsubnet=toString(nbsubnet); for(i=0;imask;i+) if(cbipi!=cbsubneti) coutendlIP地址:ip不屬于subne

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論