版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課 程 設(shè) 計(jì)</b></p><p> 2011——2012學(xué)年 第2學(xué)期</p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 題目四: IP地址的合法性及子網(wǎng)判斷 </p><
2、p><b> 初始條件:</b></p><p><b> ?。?)學(xué)習(xí)相關(guān)知識(shí)</b></p><p> (2)C/C++/VC/VB/JAVA語(yǔ)言</p><p><b> ?。?)PC機(jī)一臺(tái)</b></p><p> 要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量
3、及其技術(shù)要求,以及說(shuō)明書(shū)撰寫(xiě)等具體要求)</p><p> 在掌握IP地址表示方法及子網(wǎng)劃分的基礎(chǔ)上,按如下要求完成程序。</p><p> 1)命令行格式:ip_test subnet/mask ip_addr, ip_test其中為程序名;subnet為子網(wǎng)號(hào);mask是一個(gè)數(shù)值,代表子網(wǎng)掩碼連續(xù)1的個(gè)數(shù);ip_addr是要測(cè)試的IP地址。</p><p>
4、 例如,要測(cè)試的IP地址為202.114.16.10,子網(wǎng)號(hào)為202.113.16.0,子網(wǎng)掩碼為255.255.255.0,則命令行為ip_test 202.113.16.0/24 202.114.16.10(因?yàn)?55.255.255.0是連續(xù)的24個(gè)1,所以用24表示)。</p><p> 2)判斷subnet和ip_addr的合法性。在判斷IP地址合法性時(shí)要自行編寫(xiě)代碼,不要使用任何inet函數(shù)。判斷
5、時(shí)要考慮全面,比如以下IP地址均不合法:</p><p> 123..2.1 / 123.23$.2.1 / 123.2345.2.1 / 123.23.45.2.1</p><p> 3)判斷掩碼的合法性。</p><p> 4)在IP地址合法的前提下,判斷ip_addr是否屬于子網(wǎng)subnet。</p><p> 5)輸出命令行中
6、的ip是否合法,掩碼是否合法(可適當(dāng)給出不合法的原因)以及ip_addr是否屬于子網(wǎng)subnet。</p><p><b> 時(shí)間安排:</b></p><p> 第一、二天:查閱資料,學(xué)習(xí)算法</p><p> 第三、四天:編程調(diào)試</p><p><b> 第五天:書(shū)寫(xiě)報(bào)告</b><
7、;/p><p> 指導(dǎo)教師簽名: 年 月 日</p><p> 系主任(或責(zé)任教師)簽名: 年 月 日</p><p><b> 目錄</b></p><p> 1課程設(shè)計(jì)的目的和意義4</p><p>
8、; 2課程設(shè)計(jì)的內(nèi)容和要求4</p><p> 3課程設(shè)計(jì)的相關(guān)技術(shù)5</p><p> 3.1 IP地址相關(guān)概念和知識(shí)的回顧5</p><p> 3.2特殊的IP地址形式6</p><p> 3.3 子網(wǎng)的劃分7</p><p> 4 課程設(shè)計(jì)過(guò)程7</p><p&g
9、t; 4.1 課程設(shè)計(jì)流程圖7</p><p> 4.2 課程設(shè)計(jì)源代碼9</p><p> 4.3 運(yùn)行結(jié)果15</p><p> 5 課程設(shè)計(jì)小結(jié)16</p><p><b> 6 參考文獻(xiàn)17</b></p><p> 課程設(shè)計(jì)的目的和意義</p><
10、;p> 通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì),讓我們學(xué)會(huì)處理幾種常用計(jì)算機(jī)網(wǎng)絡(luò)問(wèn)題的基本處理方法,掌握計(jì)算機(jī)網(wǎng)絡(luò)的基本原理,使我們?cè)诿鎸?duì)不斷變化的技術(shù)時(shí),具有跟蹤,學(xué)習(xí)的基礎(chǔ)與能力。</p><p> 具體而言,關(guān)于“IP地址的合法性及子網(wǎng)判斷”課程設(shè)計(jì)題目的目的是:用C/C++語(yǔ)言編寫(xiě)程序,以判斷一個(gè)IP地址是否合法,并判斷該地址是否屬于一個(gè)給定的子網(wǎng).從而能夠考察我們對(duì)IP地址的概念,各類(lèi)IP地址的區(qū)分以及子網(wǎng)劃
11、分的理解和掌握程度.</p><p> 課程設(shè)計(jì)為我們提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立參加實(shí)踐的好機(jī)會(huì),要求我們將理論知識(shí)和實(shí)際情況有機(jī)地結(jié)合起來(lái),鍛煉我們的分析問(wèn)題,解決實(shí)際問(wèn)題的能力,提高我們適應(yīng)實(shí)際,實(shí)踐的能力;它也要求我們綜合運(yùn)用所學(xué)的計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)來(lái)解決有一定難度的問(wèn)題,從而提高了我們對(duì)知識(shí)的綜合運(yùn)用能力,加深對(duì)知識(shí)間的融會(huì)貫通和聯(lián)系的理解。</p><p> 課程設(shè)計(jì)的內(nèi)容和要
12、求</p><p> 在掌握IP地址的表示方法以及子網(wǎng)劃分方法的基礎(chǔ)上,并以計(jì)算機(jī)網(wǎng)絡(luò)中關(guān)于IP地址的相關(guān)理論知識(shí)為基石,運(yùn)用C/C++語(yǔ)言按如下要求完成程序。</p><p> 命令行格式:ip_test subnet/mask ip_addr</p><p> 其中,ip_test為程序名;subnet為子網(wǎng)號(hào);mask是一個(gè)整型數(shù)值,代表子網(wǎng)掩碼連續(xù)1的
13、個(gè)數(shù);ip_addr表示要測(cè)試的IP地址。</p><p> 比如說(shuō),要測(cè)試的IP地址為202.113.16.10,子網(wǎng)號(hào)碼是202.113.16.0,子網(wǎng)掩碼是255.255.255.0,則命令行為ip_test202.113.16.0/24 202.113.16.10。(因?yàn)?55.255.255.0是連續(xù)的24個(gè)1,所以用24表示)</p><p> 判斷subnet和ip_ad
14、dr的合法性:</p><p> 在判斷IP地址合法性時(shí)要自行編寫(xiě)代碼,不要使用任何inet 函數(shù)。判斷時(shí)要考慮各種情況,全面分析問(wèn)題。例如以下IP地址均不合法:</p><p><b> 123..2.1</b></p><p> 123.23$.2.1</p><p> 123.2345.2.1&l
15、t;/p><p> 123.23.45.1</p><p><b> 判斷掩碼的合法性:</b></p><p> 譬如說(shuō)mask的值為負(fù)數(shù)或者大與32,這時(shí)輸入的掩碼就不合法。</p><p> 在IP地址合法,掩碼合法以及子網(wǎng)號(hào)也合法的前提下,判斷ip_addr是否屬于subnet。</p><
16、;p> 輸出命令行中的ip是否合法,掩碼是否合法,子網(wǎng)號(hào)碼是否合法(可適當(dāng)給出不合法的原因)以及ip_addr是否屬于子網(wǎng)subnet。</p><p> 還可以判斷子網(wǎng)號(hào),主機(jī)號(hào)全0,全1問(wèn)題。</p><p><b> 課程設(shè)計(jì)的相關(guān)技術(shù)</b></p><p> 3.1 IP地址相關(guān)概念和知識(shí)的回顧</p>&
17、lt;p> 大型的互連網(wǎng)絡(luò)中應(yīng)該有一個(gè)全局的地址系統(tǒng),它能夠給連接到互聯(lián)網(wǎng)的每一臺(tái)主機(jī)或者路由器分配一個(gè)唯一的全局地址。TCP/IP協(xié)議的網(wǎng)絡(luò)層使用的地址標(biāo)識(shí)符叫做IP地址,IPv4中IP地址是一個(gè)32位的二進(jìn)制地址。網(wǎng)絡(luò)中的每一臺(tái)主機(jī)或者路由器至少有一個(gè)IP地址,在Internet中不允許有兩個(gè)設(shè)備具有相同的IP地址。如果一臺(tái)主機(jī)或者路由器連接到兩個(gè)或多個(gè)物理網(wǎng)絡(luò),那么它可以擁有兩個(gè)或多個(gè)IP地址。</p>&l
18、t;p> IP地址采用分層結(jié)構(gòu),由網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)兩部分組成(如下圖所示): </p><p> IP地址長(zhǎng)度為32位,用點(diǎn)分十進(jìn)制表示,格式為ⅹ.ⅹ.ⅹ.ⅹ,每個(gè)ⅹ為8位,每個(gè)ⅹ的值為0—255(例如202.113.29.119)。根據(jù)不同的取值范圍,IP地址可以分為五類(lèi),IP地址中的前5位用于標(biāo)識(shí)IP地址的類(lèi)別,具體的分類(lèi)規(guī)則如下:</p><p> ·A類(lèi)地址的第
19、一位為0。</p><p> ·B類(lèi)地址的前兩位為10 .</p><p> ·C類(lèi)地址的前三位為110。</p><p> ·D類(lèi)地址的前四位為1110。</p><p> ·E類(lèi)地址的前五位為11110。</p><p> 五類(lèi)IP地址的結(jié)構(gòu)如下所示;</p&
20、gt;<p> A類(lèi)IP地址結(jié)構(gòu)適合用于有大量主機(jī)的大型網(wǎng)絡(luò)。由于主機(jī)號(hào)長(zhǎng)度為24位,因此每個(gè)A類(lèi)網(wǎng)絡(luò)的主機(jī)IP數(shù)理論上為224=16777216。</p><p> B類(lèi)IP地址適合用于一些國(guó)際性大公司與政府機(jī)構(gòu)等中等大小的組織。由于網(wǎng)絡(luò)IP長(zhǎng)度為14位,因此允許有214=16384個(gè)不同的B類(lèi)網(wǎng)絡(luò),實(shí)際允許連接16382個(gè)網(wǎng)絡(luò)。</p><p> C類(lèi)IP地址適合用
21、于一些小公司與普通的研究機(jī)構(gòu)。</p><p><b> 特殊的IP地址形式</b></p><p><b> 直接廣播地址</b></p><p> A類(lèi),B類(lèi),C類(lèi)IP地址中主機(jī)號(hào)全1的地址稱(chēng)為直接廣播地址,用來(lái)使路由器將一個(gè)分組以廣播方式發(fā)送給特定網(wǎng)絡(luò)上的所有主機(jī)。直接廣播地址只能作為分組中的目的地址。物理網(wǎng)絡(luò)
22、采用的是點(diǎn)—點(diǎn)傳輸方式,分組廣播需要通過(guò)軟件來(lái)實(shí)現(xiàn)。</p><p><b> ?。?)受限廣播地址</b></p><p> 網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)的32位全位1的地址為受限廣播地址,用來(lái)將一個(gè)分組以廣播方式發(fā)送給本網(wǎng)的所有主機(jī)。本網(wǎng)的所有主機(jī)將接受該分組,路由器則阻擋該分組通過(guò)。</p><p> ?。?) “這個(gè)網(wǎng)絡(luò)上的這臺(tái)主機(jī)”地址</
23、p><p> ?。?)“這個(gè)網(wǎng)絡(luò)上的特定主機(jī)”地址</p><p> 主機(jī)或路由器向本網(wǎng)絡(luò)上的某個(gè)特定的主機(jī)發(fā)送分組,網(wǎng)絡(luò)號(hào)部分為全0,主機(jī)號(hào)為確定的值。這樣的分組被相知在本網(wǎng)絡(luò)內(nèi)部。</p><p><b> ?。?)回送地址</b></p><p> 回送地址用于網(wǎng)絡(luò)軟件測(cè)試和本地進(jìn)程見(jiàn)通信。TCP/IP協(xié)議規(guī)定網(wǎng)絡(luò)
24、號(hào)為 127的分組不能出現(xiàn)在任何網(wǎng)絡(luò)上;主機(jī)和路由器不能為該地址廣播任何尋址信息。</p><p><b> 3.3 子網(wǎng)的劃分</b></p><p> 人們?cè)谠缙谠O(shè)計(jì)與建設(shè)ARPAnet是,沒(méi)有預(yù)料到網(wǎng)絡(luò)的發(fā)展速度如此之快,應(yīng)用范圍如此之廣。當(dāng)時(shí)個(gè)人計(jì)算機(jī)與局域網(wǎng)尚未出現(xiàn)。所以,研究者在設(shè)計(jì)Internet地址的編址方案時(shí),主要是針對(duì)大型互聯(lián)的網(wǎng)絡(luò)結(jié)構(gòu)。設(shè)計(jì)I
25、P地址的最初目的是希望每個(gè)IP得志都能唯一地、確定地識(shí)別一個(gè)網(wǎng)絡(luò)與一臺(tái)主機(jī),但是這種方法同時(shí)也存在著兩個(gè)主要的問(wèn)題,即IP地址的有效利用率和路由器的工作效率。</p><p> 為了解決這個(gè)問(wèn)題,人們提出了子網(wǎng)(subnet)和超網(wǎng)(supernet)的概念。子網(wǎng)就是一個(gè)大的網(wǎng)絡(luò)劃分成幾個(gè)較小的網(wǎng)絡(luò),而每一個(gè)小網(wǎng)絡(luò)都是其自己的地址。超網(wǎng)就是將一個(gè)組織所屬的幾個(gè)C類(lèi)網(wǎng)絡(luò)合并成為一個(gè)更大地址范圍的邏輯網(wǎng)絡(luò)。<
26、/p><p> 劃分子網(wǎng)實(shí)際上就是在IP地址系統(tǒng)中增加一個(gè)層次。三級(jí)IP地址的表示方法為netID-subnet ID-host ID。第一級(jí)網(wǎng)絡(luò)號(hào)定義了網(wǎng)點(diǎn)的位置;第二級(jí)子網(wǎng)號(hào)定義了物理子網(wǎng);第三級(jí)主機(jī)號(hào)定義了主機(jī)和路由器到物理網(wǎng)絡(luò)的連接。三級(jí)層次的IP地址,一個(gè)IP分組的路由器的過(guò)程分為三步:第一步將分組轉(zhuǎn)發(fā)給網(wǎng)點(diǎn),第二步轉(zhuǎn)發(fā)給物理子網(wǎng),第三步轉(zhuǎn)發(fā)給確切的主機(jī)。</p><p> 當(dāng)三
27、級(jí)層次的IP地址提出后,一個(gè)很顯示的問(wèn)題是:如何從一個(gè)IP地址提取出子網(wǎng)號(hào)。因此,提出了子網(wǎng)掩碼(subnet mask)的概念。子網(wǎng)掩碼有時(shí)也叫做子網(wǎng)掩碼。</p><p> 子網(wǎng)掩碼表示方法:網(wǎng)絡(luò)號(hào)與子網(wǎng)號(hào)置1,主機(jī)號(hào)置0。</p><p> 如判斷某一IP地址是否屬于某一子網(wǎng)呢?只需將二進(jìn)制IP地址與子網(wǎng)掩碼按位進(jìn)行“與”運(yùn)算。若“與”運(yùn)算所得值與給定子網(wǎng)地址一致,則說(shuō)明該IP地
28、址屬于給定的子網(wǎng)。</p><p><b> 4 課程設(shè)計(jì)過(guò)程</b></p><p> 4.1課程設(shè)計(jì)流程圖</p><p> 4.2 課程設(shè)計(jì)源代碼</p><p> #include <iostream.h></p><p> #include <string.h
29、></p><p> #include <stdlib.h></p><p> #include <stdio.h></p><p> #include <math.h></p><p> #include <ctype.h></p><p> #incl
30、ude <winsock2.h></p><p> #include <ws2tcpip.h></p><p> #include <time.h></p><p> #include <windows.h></p><p> #pragma comment(lib,"ws2_
31、32.lib")</p><p> class ipTest{ //類(lèi)結(jié)構(gòu)</p><p><b> public:</b></p><p> char ip[15];</p><p> char subnetPlusMask[18];</p><p> char subnet
32、[18];</p><p> char TempIp[15];</p><p> l maskIsValid;</p><p><b> int mask;</b></p><p> char Tempsub[18];</p><p> ipTest(char *,char *);<
33、;/p><p> ~ipTest(){};</p><p> bool NoIllegalChar(char *); //非法字符的判斷</p><p> bool ipIsValid(char *); //判斷IP地址是否合法</p><p> bool subne
34、tIsValid(char *); //判斷子網(wǎng)號(hào)是否合法</p><p> void belong(); //判斷IP是否為子網(wǎng)成員</p><p><b> print();</b></p><p><b> }; </b>
35、</p><p> void main(int argc,char * argv[]){ //主函數(shù)</p><p> if(argc!=3){ //判斷參數(shù)格式化是否正確</p><p> cout<<"error"<<endl<<&qu
36、ot;format shoud be:ip_test subnet/mask ip"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p><b> else{</b></p><p>
37、 if(strlen(argv[1])>18){ //先判斷最簡(jiǎn)單的錯(cuò)誤,長(zhǎng)度是否超出</p><p> cout<<"subnet/mask is too long";</p><p><b> return;</b></p><p><b> }<
38、/b></p><p> if(strlen(argv[2])>15){</p><p> cout<<"ip is too long";</p><p><b> return;</b></p><p><b> }</b></p>
39、<p> ipTest test(argv[1],argv[2]); //實(shí)例話(huà)ipTest類(lèi)</p><p> test.print(); //完成相應(yīng)判別并輸出結(jié)果</p><p><b> }</b></p><p><b> }<
40、/b></p><p> ipTest::ipTest( char* subnetPlusMask, char *ip){ //構(gòu)造函數(shù)</p><p> maskIsValid=true;</p><p> char temp[2];</p><p> int smLen=strlen(subnetPlusMask);
41、 //把'/'前的字符復(fù)制到subnet字符數(shù)組中</p><p> for( int i=0; i<smLen && subnetPlusMask[i] !='/'; i++ ){</p><p> this->subnet[i]=subnetPlusMask[i];</p><p> th
42、is->Tempsub[i]=subnetPlusMask[i];</p><p><b> }</b></p><p> subnet[i]='\0';</p><p> Tempsub[i]='\0';</p><p> if(i<=smLen-2){
43、 //初始化mask和maskIsVslid</p><p> if(i==smLen-2){</p><p> temp[0]=subnetPlusMask[i+1];</p><p> if( !isdigit(temp[0]) )</p><p> maskIsValid = false;&
44、lt;/p><p><b> }</b></p><p> else if( i == smLen-3 ){</p><p> temp[0]=subnetPlusMask[i+1];</p><p> temp[1]=subnetPlusMask[i+2];</p><p> if( !(
45、isdigit(temp[0])&&isdigit(temp[1])) )</p><p> maskIsValid=false;</p><p><b> }</b></p><p> mask = atoi(temp);</p><p> if( mask<0 || mask >
46、32)</p><p> maskIsValid = false;</p><p><b> }</b></p><p><b> else</b></p><p> maskIsValid=false;</p><p> strcpy( this->subn
47、etPlusMask, subnetPlusMask);</p><p> strcpy( this->ip, ip );</p><p> strcpy( this->TempIp, ip );</p><p><b> }</b></p><p> ipTest::print(){ //調(diào)
48、用判別函數(shù),并輸出結(jié)果</p><p> bool subIsV=subnetIsValid(Tempsub);</p><p> bool ipIsV=ipIsValid(TempIp);</p><p> if(!subIsV)</p><p> cout<<"subnet is invalid ! &quo
49、t;<<endl;</p><p><b> else</b></p><p> cout<<"valid subnet: "<<subnet<<endl;</p><p> if(!maskIsValid)</p><p> cout<
50、<"mask is invalid!"<<endl;</p><p><b> else</b></p><p> cout<<"valid mask:"<<mask<<endl;</p><p> if(!ipIsV)</p>&
51、lt;p> cout<<"ip is invalid!"<<endl;</p><p><b> else</b></p><p> cout<<"valid ip:"<<ip<<endl;</p><p> //判斷IP是否bel
52、ong subnet</p><p> if(subIsV&&ipIsV&&maskIsValid)</p><p><b> belong();</b></p><p><b> }</b></p><p> bool ipTest::NoIllegalCh
53、ar(char *ch){ //子函數(shù),判斷輸入是否含有非數(shù)字字符</p><p> unsigned int i,k=0;</p><p> for(i=0;i<strlen(ch);i++){</p><p> if(isdigit(*(ch+i))==0){</p><p> return false;</p&g
54、t;<p><b> }</b></p><p><b> }</b></p><p> return true;</p><p><b> }</b></p><p> bool ipTest::ipIsValid(char * ip){ /
55、/判別IP地址是否合法</p><p> char ch[]=" ."; </p><p> char *token,*dot[4];</p><p> int iplen=0;</p><p> token=strtok(ip,ch); //以&q
56、uot;."標(biāo)志將IP字符串按節(jié)分開(kāi)</p><p> while(token!=NULL){ //循環(huán)進(jìn)行,知道結(jié)束</p><p> dot[iplen]=token; //將分開(kāi)的每段賦值給dot</p><p><b&
57、gt; iplen++;</b></p><p> token= strtok(NULL,ch);</p><p> }if(iplen!=4)</p><p> {cout<<this->Tempsub<<endl;</p><p> return false;}
58、 //段數(shù)不對(duì)</p><p> for(int i=0;i<4;i++){</p><p> if(!NoIllegalChar(dot[i])||atoi(dot[i])>255) //有非法字符或某段值非法</p><p> return false;</p><p>&
59、lt;b> }</b></p><p> return true;</p><p><b> }</b></p><p> bool ipTest::subnetIsValid(char* subnet){ //判斷子網(wǎng)號(hào)是否合法</p><p> if( ! ipI
60、sValid(subnet)) //調(diào)用判別IP地址合法性的函數(shù)</p><p> return false;</p><p> return true;</p><p><b> }</b></p><p> //判斷IP是否為子網(wǎng)成員,判斷子網(wǎng)號(hào)與掩碼是否匹配,
61、以及子網(wǎng)號(hào)、主機(jī)號(hào)全0全1問(wèn)題</p><p> void ipTest::belong(){</p><p> int subLen=strlen(subnet);</p><p> int ipLen=strlen(ip);</p><p> unsigned int iIPA,iSubA,iMask;</p>&l
62、t;p> unsigned char subA[4],ipA[4];</p><p> char temp[3];</p><p> int i,j,t=0;</p><p> for(i=0,j=0;i<subLen;i++){ //不用再檢錯(cuò)</p><p> if(subne
63、t[i] != '.')</p><p> temp[j++]=subnet[i]; //temp數(shù)組中放'.'間的串</p><p><b> else{</b></p><p> subA[3-t] = atoi(temp); /
64、/subA數(shù)組中放'.'間的數(shù)據(jù)</p><p><b> j=0;</b></p><p><b> t++;</b></p><p> temp[0]=temp[1]=temp[2]='\0';</p><p><b> }</b>&
65、lt;/p><p><b> }</b></p><p> subA[0] = atoi(temp);</p><p> temp[0]=temp[1]=temp[2]='\0';</p><p> iSubA = *( unsigned int *)subA; //iSubA中放sub
66、net中'.'除外的串對(duì)應(yīng)的數(shù)</p><p> for(i= 0, j= 0, t= 0; i<ipLen; i++){ //不用再檢錯(cuò)</p><p> if(ip[i] != '.')</p><p> temp[j++] = ip[i];</p><p><b> else{
67、</b></p><p> ipA[3-t] = atoi(temp);</p><p><b> j=0;</b></p><p><b> t++;</b></p><p> temp[0]=temp[1]=temp[2]='\0';</p>&
68、lt;p><b> }</b></p><p><b> }</b></p><p> ipA[0] = atoi(temp);</p><p> iIPA = *( unsigned int* )ipA; //iIPA中放IP中'.'除外的串對(duì)應(yīng)的數(shù)</p>
69、<p> iMask = 0xffffffff;</p><p> iMask<<=(32-mask); //獲取掩碼</p><p> if( ( iSubA | iMask ) != iMask ){ //說(shuō)明sub與mask不匹配</p><p> cout<<&quo
70、t; 子網(wǎng)號(hào)與掩碼不匹配,error!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> if( ( iSubA ^ iMask ) == 0 ){ //說(shuō)明子網(wǎng)號(hào)全1</p><p> c
71、out<<" 子網(wǎng)號(hào)全1,error!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> if( ( iSubA & iMask ) == 0 ){ //說(shuō)明子網(wǎng)號(hào)全0<
72、/p><p> cout<<" 子網(wǎng)號(hào)全0,error!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> if( ( iSubA) == (iIPA & iMask) )
73、{ //IP和掩碼與,結(jié)果和子網(wǎng)號(hào)比較</p><p> if( ( iIPA | iMask) == iMask ){ //說(shuō)明主機(jī)號(hào)全0</p><p> cout<<" 主機(jī)號(hào)全0,error!"<<endl;</p><p><b> return;</b></p&
74、gt;<p><b> }</b></p><p> if( ( iIPA | iMask ) == 0xffffffff ){ //說(shuō)明主機(jī)號(hào)全1</p><p> cout<<" 主機(jī)號(hào)全1,error!"<<endl;</p><p><b>
75、return;</b></p><p><b> }</b></p><p> cout<<" "<< ip <<" belongs to "<<subnetPlusMask<<endl;</p><p><b> r
76、eturn;</b></p><p> }//ip屬于subnet</p><p><b> else</b></p><p> cout<<" "<< ip <<" doesn't belong to "<<subnetPlusM
77、ask<<endl;</p><p> }//ip不屬于subnet</p><p><b> 4.3 運(yùn)行結(jié)果</b></p><p> 子網(wǎng)號(hào)、子網(wǎng)掩碼和IP地址均不合法時(shí):</p><p> 子網(wǎng)號(hào)、子網(wǎng)掩碼和IP地址均合法,且IP地址屬于子網(wǎng)號(hào)時(shí):</p><p>
78、 子網(wǎng)號(hào)、子網(wǎng)掩碼和IP地址均合法,且IP地址不屬于子網(wǎng)號(hào)時(shí):</p><p><b> 子網(wǎng)號(hào)不合法時(shí):</b></p><p><b> 掩碼不合法時(shí):</b></p><p><b> IP地址不合法時(shí):</b></p><p><b> 5 課程設(shè)計(jì)小
79、結(jié)</b></p><p> 為期一周的計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)終于圓滿(mǎn)結(jié)束,我所做的課設(shè)題目“IP地址的合法性及子網(wǎng)判斷”算是比較簡(jiǎn)單,但是由于對(duì)子網(wǎng)掩碼等各種概念的不夠熟悉,在開(kāi)始之前我通過(guò)課本和網(wǎng)絡(luò)查找了大量信息,在考慮IP地址(subnet子網(wǎng)地址原理相同)非法的情況時(shí),我們就漏掉了幾種情況,這直接導(dǎo)致我們畫(huà)的流程圖以及編寫(xiě)的源代碼不完善。經(jīng)過(guò)反復(fù)的修改最后才使代碼功能完善。在設(shè)計(jì)好算法后,用C/
80、C++編寫(xiě)源代碼以實(shí)現(xiàn)算法的過(guò)程中,面對(duì)如何選擇合適的數(shù)據(jù)結(jié)構(gòu),我們感到很為難。最后在老師的指導(dǎo)和幫助下才解決。另一方面,在代碼的調(diào)試過(guò)程中,程序出現(xiàn)了很多的Debug,有的是符號(hào)的缺省比較簡(jiǎn)單,但有的比較復(fù)雜,自己看不懂,我也請(qǐng)教了很多同學(xué)幫忙結(jié)局,最后終于搞定了所有問(wèn)題,看著最關(guān)鍵的一部分解決了,真讓人欣喜。</p><p> 此次課設(shè)也讓我體會(huì)到了,很多東西說(shuō)的簡(jiǎn)單,做的難,看書(shū)的同時(shí)只有結(jié)合動(dòng)手才能最有
81、效率地提高自己的編程能力。</p><p><b> 6 參考文獻(xiàn)</b></p><p> [1]謝希仁 《計(jì)算機(jī)網(wǎng)絡(luò)》(第五版)電子工業(yè)出版社 2008.1</p><p> [2]張堯?qū)W,郭國(guó)強(qiáng),王曉春,趙艷標(biāo) 《計(jì)算機(jī)網(wǎng)絡(luò)與Internet教程》(第2版)清華大學(xué)出版社 2006.11</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)--判斷ip地址的合法性及子網(wǎng)判斷
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)---ip地址的合法性及子網(wǎng)判斷
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 《計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)》
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-監(jiān)控ip包流量
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)--小規(guī)模ip網(wǎng)絡(luò)的建立
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)---網(wǎng)絡(luò)設(shè)計(jì)
- 《計(jì)算機(jī)網(wǎng)絡(luò)與通信》課程設(shè)計(jì)--獲取主機(jī)名和ip地址
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告--監(jiān)控ip包流量
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-- 解析ip數(shù)據(jù)包
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)組建課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論