版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課 程 設(shè) 計(jì) 書(shū)</b></p><p> 學(xué)院 計(jì)算機(jī)學(xué)院 </p><p> 專業(yè) 計(jì)算科學(xué)與技術(shù) </p><p> 班級(jí) 2009級(jí)5班 </p><p> 題目 IP地址的合法
2、性及子網(wǎng)判斷 </p><p> 教師 </p><p> 學(xué)生 </p><p><b> 概述</b></p><p><b> 1.1課程設(shè)計(jì)目的</b></p><p> 本設(shè)計(jì)要求編寫(xiě)程序,判斷一個(gè)
3、IP地址是否合法,并判斷該地址是否是屬于一個(gè)給定的子網(wǎng)。從而考察讀者是否對(duì)IP地址概念及子網(wǎng)劃分有非常清楚的認(rèn)識(shí)。</p><p> 1.2 課程設(shè)計(jì)的要求</p><p> 在掌握IP 地址的表示方法及指望劃分方法的基礎(chǔ)上,按如下要求完成程序。</p><p> 命令行格式:ip_test subnet/mask ip_addr</p><
4、;p> 其中,ip_test為程序名;subnet為子網(wǎng)好;mask是一個(gè)數(shù)值,代表子網(wǎng)掩碼連續(xù)1 的個(gè)數(shù);ip_addr是要測(cè)試的IP地址。</p><p> 例如,要測(cè)試的IP地址為202.113.16.10,子網(wǎng)號(hào)為202.113.16.0,子網(wǎng)掩碼為255.255.255.0,則沒(méi)命令行為ip_test202.113.16.0/24 202.113.16.10.(因?yàn)?55.255.255.0是
5、連續(xù)的24個(gè)1,所以用24表示。)</p><p> 判斷subnet和ip_addr的合法性。</p><p> 在判斷IP地址的合法性是要自行編寫(xiě)代碼,不要用任何的inet函數(shù)。判斷是要考慮全面,比如以下IP 的地址的合法性:</p><p><b> 123..2.1</b></p><p> 123.23
6、¥.2.1</p><p> 123.23.45.2.1</p><p><b> 判斷掩碼的合法性。</b></p><p> 在IP地址合法的前提下,判斷ip_addr是否屬于子網(wǎng)subnet。</p><p> 輸入命令行中的ip是否合法,掩碼是否合法(可適當(dāng)給出不合法原因)以及ip_addr是否屬于子網(wǎng)s
7、ubnet。</p><p><b> 第二章 具體設(shè)計(jì)</b></p><p><b> 2.1設(shè)計(jì)思路</b></p><p> 根據(jù)以上的要求,并結(jié)合當(dāng)前的所學(xué)的一些知識(shí)和技術(shù),我們最終通過(guò)另一種方式來(lái)實(shí)現(xiàn)相同的功能,但代碼更加優(yōu)化,高效,方便用戶的窗體程序。</p><p> 對(duì)于以
8、上的要求,設(shè)計(jì)思路如下:</p><p><b> 程序大致流程</b></p><p> 分別判斷子網(wǎng)號(hào),掩碼和ip地址的基本格式的合法性。</p><p> 如果三者的基本格式都合法,才調(diào)用判定“IP地址是否為子網(wǎng)成員”的函數(shù)。該函數(shù)同時(shí)判別子網(wǎng)號(hào)和掩碼是否匹配,子網(wǎng)號(hào)為全0或全1,主機(jī)號(hào)為全0、全1。</p><
9、p><b> 核心代碼及說(shuō)明</b></p><p> 判斷ip地址是否合法,才調(diào)用判定“IP地址是否為子網(wǎng)成員”的函數(shù)。該函數(shù)同時(shí)判斷子網(wǎng)號(hào)與掩碼是否匹配,子網(wǎng)號(hào)為全0或全1,主機(jī)號(hào)為全0、全1.</p><p><b> 核心代碼及說(shuō)明</b></p><p> 判斷IP地址是否合法。</p>
10、<p> 一般來(lái)說(shuō),我們先檢查最明顯的錯(cuò)誤。例如,可以先判斷IP中“.”的個(gè)數(shù)是否正確;接著,以“.”為標(biāo)志將IP字符串按節(jié)分開(kāi);然后,看該IP是否為4段,再判斷各節(jié)是否是0~255間的整數(shù)。關(guān)于網(wǎng)絡(luò)號(hào)、主機(jī)號(hào)全0全1等問(wèn)題要在后面結(jié)合子網(wǎng)掩碼一起判斷。</p><p> 這里德關(guān)鍵是怎么樣將IP字符串以“.”為標(biāo)志按節(jié)分開(kāi),這要用到函數(shù)strtok(char * strToken,const
11、char * strDelimit)。第一個(gè)參數(shù)是給定的串,第二個(gè)參數(shù)是分隔符集合,該函數(shù)的功能就是以strDelimit中包含的任意字符為分隔符,在strToken中尋找下一個(gè)token。每一次調(diào)用strtok后,都會(huì)在strToken中插入一個(gè)NULL字符,所以,如果要讀取下一個(gè)stoken,接下來(lái)調(diào)用strtok時(shí)第一個(gè)參數(shù)用NULL。</p><p> 這樣,IP串的每一段都放到dot數(shù)組里了,下面判斷
12、是否有非法字符,每一段的值是否在0~255之間,就很容易了。</p><p> 判斷IP地址是否為子網(wǎng)成員,判斷子網(wǎng)號(hào)與掩碼是否匹配,以及子網(wǎng)號(hào)、主機(jī)號(hào)全0、全1的問(wèn)題</p><p><b> 2.2流程圖如下:</b></p><p> 當(dāng)用戶啟動(dòng)程序后(如圖2.1),在輸入框中輸入IP、子網(wǎng)、子網(wǎng)掩碼,然后點(diǎn)擊測(cè)試,驗(yàn)證其合法性。在
13、此過(guò)程中調(diào)用子程序isLegal(如圖2.2)在子程序中判斷輸入的IP地址是否合法(其中包括:1.判斷輸入的IP長(zhǎng)度是否合法;2.判斷輸入的IP是否含有非法字符;3.判斷輸入的IP格式是否正確;4.判斷輸入的IP是否已轉(zhuǎn)化為Ipaddress的實(shí)例)。跳回到主程序中繼續(xù)執(zhí)行,如果IP、子網(wǎng)、子網(wǎng)掩碼都合法,調(diào)用子程序subChecked(如圖2.3),在子程序中完成判斷子網(wǎng)號(hào)和子網(wǎng)掩碼是否匹配,如果匹配則進(jìn)一步判讀子網(wǎng)號(hào)是否為全0或全1
14、,否則輸出子網(wǎng)號(hào)和子網(wǎng)掩碼不匹配提示。接下來(lái),如果子網(wǎng)號(hào)不為全0或全1則將IP和掩碼做“與”運(yùn)算,結(jié)果和子網(wǎng)號(hào)比較,否則輸出子網(wǎng)號(hào)為全0或全1提示。再接下來(lái),判斷比較結(jié)果(IP和掩碼做“與”運(yùn)算的結(jié)果和子網(wǎng)號(hào)的比較結(jié)果)是否相等,如果相等則判斷主機(jī)號(hào)是否為全0或全1,如果不相等則輸出“IP不屬于該子網(wǎng)”。最后,如果主機(jī)號(hào)為全0或全1則輸出主機(jī)號(hào)為全0或全1提示,如果主機(jī)號(hào)不為全0或全1則輸出“IP屬于該子網(wǎng)”。</p>&
15、lt;p> 子程序執(zhí)行完后返回主程序中繼續(xù)執(zhí)行,然后完成ip地址是否屬于給定子網(wǎng)的判定</p><p> 圖2.2-子程序islegal流程圖</p><p> 圖2.3-子流程圖subChecked</p><p> 2.3核心源代碼分析與說(shuō)明</p><p> using System;</p><p&
16、gt; using System.Collections.Generic;</p><p> using System.ComponentModel;</p><p> using System.Data;</p><p> using System.Drawing;</p><p> using System.Linq;</
17、p><p> using System.Text;</p><p> using System.Windows.Forms;</p><p> using System.Net.Sockets;</p><p> using System.Net;</p><p> using System.Text.Regul
18、arExpressions;</p><p> namespace WindowsFormsApplication1</p><p><b> {</b></p><p> public partial class Form1 : Form</p><p><b> {</b></p&
19、gt;<p> public Form1()</p><p><b> {</b></p><p> InitializeComponent();</p><p><b> }</b></p><p> string ipAddress;//聲明ip地址</p>
20、<p> string childIp; //聲明子網(wǎng)號(hào)</p><p> string yanma;//聲明子網(wǎng)掩碼</p><p> /*以下代碼為單擊檢測(cè)按鈕后執(zhí)行相關(guān)的操作,程序首先清空</p><p> * 顯示框listbox中的數(shù)據(jù),然后檢測(cè)由用戶輸入的ip地址</p><p> * 子網(wǎng)號(hào),以及子網(wǎng)掩碼的
21、合法性,通過(guò)調(diào)用函數(shù)islegal來(lái)初步檢測(cè),</p><p> * 合法返回true,不合法返回false,并輸出錯(cuò)誤</p><p> * 信息,若驗(yàn)證通過(guò),計(jì)算ip地址的二進(jìn)制形式并輸出,然后通過(guò)</p><p> * 給出的數(shù)據(jù)將ip地址與子網(wǎng)掩碼進(jìn)行與運(yùn)算,并將結(jié)</p><p> * 果與給出的子網(wǎng)號(hào)進(jìn)行比較,判斷并輸出該
22、ip地址是否屬于</p><p><b> * 給定的子網(wǎng)號(hào)</b></p><p><b> */ </b></p><p> private void button1_Click(object sender, EventArgs e)</p><p><b> {</b&
23、gt;</p><p> //清空l(shuí)istBox中的內(nèi)容</p><p> this.listBox1.Items.Clear();</p><p> //獲取用戶輸入的ip地址</p><p> ipAddress = txtIp.Text;</p><p><b> //獲取子網(wǎng)號(hào)</b&
24、gt;</p><p> childIp = txtChild.Text;</p><p><b> //獲取子網(wǎng)掩碼</b></p><p> yanma = txtYanma.Text;</p><p> //判斷輸入的ip地址,子網(wǎng)號(hào),子網(wǎng)掩碼是否合法</p><p> if (!
25、islegal(ipAddress))</p><p><b> {</b></p><p> MessageBox.Show("ip地址輸入錯(cuò)誤!", "提示");</p><p><b> return;</b></p><p><b>
26、 }</b></p><p> else if (!islegal(childIp))</p><p><b> {</b></p><p> MessageBox.Show("子網(wǎng)號(hào)輸入錯(cuò)誤!", "提示");</p><p><b> return
27、;</b></p><p><b> }</b></p><p> else if (!islegal(yanma))</p><p><b> {</b></p><p> MessageBox.Show("子網(wǎng)掩碼錯(cuò)誤!", "提示")
28、;</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> LbAdd("本次計(jì)
29、算結(jié)果如下:");</p><p> string stp = ChangeIP(ipAddress);</p><p> GetIpStyle(stp);</p><p> LbAdd(ipAddress + "轉(zhuǎn)化為二進(jìn)制形式為:");</p><p> LbAdd(stp);</p>
30、<p> //string sto = ChangeIP(yanma);</p><p> //LbAdd(yanma + "轉(zhuǎn)化為二進(jìn)制形式為: "+sto);</p><p> // LbAdd("與子網(wǎng)掩碼進(jìn)行與運(yùn)算~~");</p><p> //MessageBox.Show(stp);</p
31、><p> Byte []ip3=IPAddress.Parse(ipAddress).GetAddressBytes();</p><p> //foreach (byte b in ip3)</p><p><b> //{</b></p><p> // LbAdd(b.ToString());</
32、p><p><b> //}</b></p><p> //double ip2 =Convert.ToDouble((ChangeIP(ipAddress)));</p><p> //double cip2 = Convert.ToDouble((ChangeIP(childIp)));</p><p> //
33、double ym2 = Convert.ToDouble((ChangeIP(yanma)));</p><p> //MessageBox.Show(ip2.ToString());</p><p> uint ip = GetBinaryIp(ipAddress);</p><p> uint cip = GetBinaryIp(childIp);
34、 f</p><p> uint ym = GetBinaryIp(yanma);</p><p> /*以下代碼為子程序SubChecked中的內(nèi)容,此處為方便編寫(xiě),</p><p> * 直接寫(xiě)在了主程序體中,基本思路是按流程圖走的,首先判斷</p><p> * 子網(wǎng)號(hào)與掩碼是否匹配,接著檢測(cè)子網(wǎng)號(hào)是否為全0或全
35、1的情況,</p><p> * 接著檢測(cè)主機(jī)號(hào)為全0或全1的情況,最后判斷計(jì)算出的子網(wǎng)號(hào)是</p><p> * 否與給定的子網(wǎng)號(hào)相同,并輸出結(jié)果信息</p><p><b> */ </b></p><p> //說(shuō)明子網(wǎng)號(hào)與掩碼不匹配</p><p> if((cip|ym)!=y
36、m)</p><p><b> {</b></p><p> LbAdd("子網(wǎng)號(hào)與掩碼不匹配,error!");</p><p> Console.WriteLine("{0}", (ip | ym));</p><p> Console.WriteLine("
37、{0}", ym);</p><p><b> return;</b></p><p><b> }</b></p><p><b> //說(shuō)明子網(wǎng)號(hào)全1</b></p><p> if((cip^ym)==0)</p><p><
38、;b> {</b></p><p> LbAdd("子網(wǎng)號(hào)全1,error!");</p><p><b> return;</b></p><p><b> }</b></p><p><b> //說(shuō)明子網(wǎng)號(hào)全0</b><
39、;/p><p> if((cip&ym)==0)</p><p><b> {</b></p><p> LbAdd("子網(wǎng)號(hào)全為0,error!");</p><p><b> return;</b></p><p><b> }
40、</b></p><p> //ip和掩碼做"與"運(yùn)算,結(jié)果和子網(wǎng)號(hào)比較</p><p> if (cip==(ip&ym))</p><p><b> {</b></p><p> //MessageBox.Show("success");</p
41、><p><b> //說(shuō)明主機(jī)號(hào)全0</b></p><p> if ((ip | ym) == ym)</p><p><b> {</b></p><p> LbAdd("主機(jī)號(hào)為全0,error!");</p><p><b> r
42、eturn;</b></p><p><b> }</b></p><p><b> //說(shuō)明主機(jī)號(hào)全1</b></p><p> if ((ip | ym) == 0xffffffff)</p><p><b> {</b></p><
43、p> LbAdd("主機(jī)號(hào)全1,error!");</p><p><b> return;</b></p><p><b> }</b></p><p> LbAdd("該ip 屬于子網(wǎng) "+childIp);</p><p><b&g
44、t; return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> //MessageBox.Show("faile");</p&
45、gt;<p> LbAdd("該ip不屬于子網(wǎng)" + childIp);</p><p><b> }</b></p><p><b> }</b></p><p> //Convert.ToString(11, 2);</p><p><b>
46、 }</b></p><p> /// <summary></p><p> /// 判斷輸入的IP地址類型是否合法,合法返回TRUE,不合法返回FALSE</p><p> /// </summary></p><p> /// <param name="strIp"&g
47、t;傳入待驗(yàn)證IP</param></p><p> /// <returns></returns></p><p> private bool islegal(string strIp)</p><p><b> {</b></p><p> IPAddress myip;
48、</p><p> int length = ChangeIP(strIp).Length;</p><p> //用正則表達(dá)式判斷輸入的ip類型是否合法</p><p> Regex regIp=new Regex(@"\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}");</p><p>
49、if(!regIp.IsMatch(strIp))</p><p><b> {</b></p><p> return false;</p><p><b> }</b></p><p> //判斷輸入的ip型字符串能否轉(zhuǎn)化為ip型</p><p> else i
50、f (!IPAddress.TryParse(strIp, out myip))</p><p><b> {</b></p><p> return false;</p><p><b> }</b></p><p> //判斷ip長(zhǎng)度是否合法</p><p>
51、else if(length!=32)</p><p><b> {</b></p><p> return false;</p><p><b> }</b></p><p> // else if (GetBinaryIp(strIp))</p><p><
52、b> else</b></p><p><b> {</b></p><p> return true;</p><p><b> }</b></p><p><b> }</b></p><p> /// <summ
53、ary></p><p> /// 將十進(jìn)制ip 轉(zhuǎn)化為二進(jìn)制</p><p> /// </summary></p><p> /// <param name="strIP"></param></p><p> /// <returns></return
54、s></p><p> public string ChangeIP(string strIP)</p><p><b> {</b></p><p> string strHtml = "";</p><p><b> try</b></p><
55、;p><b> {</b></p><p> string[] IParray = strIP.Split('.'); //拆分IP </p><p> int IP1 = Convert.ToInt32(IParray[0]);</p><p> int IP2 = Convert.ToInt32(IParr
56、ay[1]);</p><p> int IP3 = Convert.ToInt32(IParray[2]);</p><p> int IP4 = Convert.ToInt32(IParray[3]);</p><p> string strIP1 = GetIP(IP1);</p><p> string strIP2 = Ge
57、tIP(IP2);</p><p> string strIP3 = GetIP(IP3);</p><p> string strIP4 = GetIP(IP4);</p><p> //將拆分后的ip地址重新組合起來(lái)</p><p> strHtml = strIP1 + strIP2 + strIP3 + strIP4;<
58、/p><p><b> }</b></p><p><b> catch</b></p><p><b> {</b></p><p> MessageBox.Show("輸入地址類型有錯(cuò)!,可能包含其他字符。","警告");<
59、/p><p><b> }</b></p><p> return strHtml;</p><p><b> }</b></p><p> /// <summary></p><p> /// 得到二進(jìn)制IP</p><p> /
60、// </summary></p><p> /// <param name="IP"></param></p><p> /// <returns></returns></p><p> public string GetIP(int IP) </p><p&
61、gt;<b> { </b></p><p> string strIP = Convert.ToString(IP, 2);</p><p> int len = strIP.Length; </p><p> if (len < 8)</p><p><b> { </b><
62、;/p><p> for (int i = 0; i < 8 - len;i++) </p><p><b> { </b></p><p> strIP = "0" + strIP;</p><p><b> }</b></p><p><
63、;b> } </b></p><p> return strIP;</p><p><b> }</b></p><p> /// <summary></p><p> /// 直接轉(zhuǎn)化為二進(jìn)制形式的ip地址,返回?zé)o符號(hào)整數(shù)形式</p><p> ///
64、</summary></p><p> /// <param name="str"></param></p><p> /// <returns></returns></p><p> private uint GetBinaryIp(string str)</p>
65、<p><b> {</b></p><p> IPAddress myip = IPAddress.Parse(str);</p><p> uint iptest = BitConverter.ToUInt32(myip.GetAddressBytes(), 0);</p><p> return iptest;</
66、p><p><b> }</b></p><p> /// <summary></p><p> /// 向listbox中添加測(cè)試的結(jié)果</p><p> /// </summary></p><p> /// <param name="str&qu
67、ot;></param></p><p> private void LbAdd(string str)</p><p><b> {</b></p><p> listBox1.Items.Add(str);</p><p><b> }</b></p>&
68、lt;p> /// <summary></p><p> /// 獲取ip地址的類型</p><p> /// </summary></p><p> /// <param name="str"></param></p><p> private void G
69、etIpStyle(string str)</p><p><b> {</b></p><p> if (str.StartsWith("0"))</p><p><b> { </b></p><p> LbAdd("該ip屬于A類網(wǎng)絡(luò)");&
70、lt;/p><p><b> }</b></p><p> else if (str.StartsWith("10"))</p><p><b> {</b></p><p> LbAdd("該ip屬于B類網(wǎng)絡(luò)");</p><p>
71、;<b> }</b></p><p> else if (str.StartsWith("110"))</p><p><b> {</b></p><p> LbAdd("該ip屬于C類網(wǎng)絡(luò)");</p><p><b> }</
72、b></p><p> else if (str.StartsWith("1110"))</p><p><b> {</b></p><p> LbAdd("該ip屬于D類網(wǎng)絡(luò)");</p><p><b> }</b></p>
73、<p> else if (str.StartsWith("11110"))</p><p><b> {</b></p><p> LbAdd("該ip屬于E類網(wǎng)絡(luò)");</p><p><b> }</b></p><p><b&g
74、t; else</b></p><p><b> {</b></p><p> LbAdd("ip地址計(jì)算錯(cuò)誤!");</p><p><b> }</b></p><p><b> }</b></p><p>
75、 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)</p><p><b> {</b></p><p><b> }</b></p><p> /*以下代碼為清空按鈕中的內(nèi)容,作用是將各</p><p&
76、gt; * 個(gè)輸入框中的內(nèi)容清空</p><p><b> */</b></p><p> private void button2_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> this.txtChild.Te
77、xt = "";</p><p> this.txtIp.Text = "";</p><p> this.txtYanma.Text = "";</p><p><b> }</b></p><p><b> }</b></
78、p><p><b> }</b></p><p> 第三章 結(jié)果分析與總結(jié)</p><p><b> 3.1結(jié)果與分析</b></p><p><b> 程序截圖:</b></p><p><b> 運(yùn)行時(shí)截圖:</b><
79、;/p><p><b> 分析:</b></p><p> Ip地址202.113.16.10轉(zhuǎn)化為二進(jìn)制為11001010011100010001000000001010</p><p> 子網(wǎng)掩碼255.255.255.0轉(zhuǎn)化為二進(jìn)制位11111111111111111111111100000000</p><p>
80、; 他們相與之后為11001010011100010001000000000000化為點(diǎn)分十進(jìn)制為</p><p> 202.113.16.0 </p><p> 程序計(jì)算的結(jié)果符合結(jié)果,正確。</p><p><b> 分析:</b></p><p> 當(dāng)ip地址用點(diǎn)分十進(jìn)制表示時(shí),如234.213.12.
81、11 。由于輸入的ip地址為168.113.2022.0,不符合要求所以,程序提示出錯(cuò)。</p><p><b> 分析:</b></p><p> 當(dāng)ip地址用點(diǎn)分十進(jìn)制表示時(shí),應(yīng)該為4字節(jié),每個(gè)字節(jié)表示的范圍在</p><p> 0-255之間,而且每個(gè)字節(jié)之間用點(diǎn)號(hào)分隔。由于輸入的ip地址為168.113.20沒(méi)有4字節(jié),所以程序提
82、示出錯(cuò)。</p><p><b> 分析:</b></p><p> Ip地址只能由數(shù)字組成,而輸入的ip地址中出現(xiàn)了非數(shù)字的字符f,所以程序提示出錯(cuò)。</p><p><b> 3.2總結(jié)</b></p><p><b> 1.遇到的問(wèn)題</b></p>
83、<p> 本次我們采用c#語(yǔ)言作為工具,來(lái)書(shū)寫(xiě)我們的代碼,設(shè)計(jì)了一個(gè)windows下的窗體應(yīng)用程序。在此次設(shè)計(jì)中對(duì)關(guān)于ip的合法性的檢測(cè)和對(duì)ip的地址與掩碼相與運(yùn)算上出現(xiàn)了些許問(wèn)題。在ip地址的合法性判斷上我們采用正則表達(dá)式匹配字符的方法,這是種簡(jiǎn)潔快速的判定方法。再次就是如何把用戶輸入的ip地址(字符串類型)轉(zhuǎn)化為二進(jìn)制的32位數(shù),來(lái)和已知的掩碼做與運(yùn)算。在這個(gè)問(wèn)題上我們想到了三種方法。</p><p
84、><b> 方法一:</b></p><p> 我們把用戶輸入的ip地址(字符串類型)先轉(zhuǎn)化成整型數(shù)值,然后與掩碼相與得到子網(wǎng)號(hào),但是這中方法會(huì)出現(xiàn)轉(zhuǎn)化為整型的ip地址的大小超出了32位整型數(shù)的范圍,所以我們放棄了這種方法。</p><p><b> 方法二:</b></p><p> 把用戶輸入的ip地址(
85、字符串類型),先分別分成4個(gè)部分,存入在一個(gè)數(shù)組中,同樣我們把子網(wǎng)掩碼也做同樣的處理存入一個(gè)數(shù)組。然后我們分別把這兩個(gè)數(shù)組相同位序的數(shù)分別相與得到相與后的結(jié)果再存入另一個(gè)數(shù)組,最后把這個(gè)數(shù)組轉(zhuǎn)化為一個(gè)字符串就得到了我們想要的ip地址與子網(wǎng)掩碼相與后的子網(wǎng)號(hào)了。這種方法克服了第一種方法的類型長(zhǎng)度不匹配的情況,是可以在程序中實(shí)現(xiàn)的。</p><p><b> 方法三:</b></p>
86、;<p> 把用戶輸入的ip地址(字符串類型),先通過(guò)c#內(nèi)置的方法IpAddress.Parse轉(zhuǎn)化為字節(jié)數(shù)組,然后再用BitConverter把字節(jié)數(shù)組轉(zhuǎn)化32位無(wú)符號(hào)的二進(jìn)制數(shù),子網(wǎng)掩碼也做同樣的處理,然后即可以相與的到我們想要的結(jié)果的。方法三使用了c#語(yǔ)言內(nèi)置的函數(shù),使得代碼更加的高效,簡(jiǎn)潔,這也是方法三優(yōu)越方法二的地方,所以我們就采用了方法三。</p><p><b> 2.
87、程序的改進(jìn)</b></p><p> 該程序參考了課程設(shè)計(jì)指導(dǎo)書(shū)上的部分內(nèi)容,同時(shí)也對(duì)其進(jìn)行了部分改進(jìn),由于書(shū)上的代碼是用C++編寫(xiě),同時(shí)是在dos界面下進(jìn)行操作,缺乏良好的交互性,并且缺乏ip地址分類信息的判斷功能,我們?cè)诔绦蛟O(shè)計(jì)中采用了用戶交互性更好的窗體模式,同時(shí)增加了這一功能。</p><p><b> 3.缺陷與不足</b></p>
88、;<p> 由于時(shí)間限制以及技術(shù)水平的局限,本程序還存在一些不足,也有一些未知bug尚未解決,但在這次課程設(shè)計(jì)中,還是獲得了很多經(jīng)驗(yàn) 。</p><p><b> 3.2參考文獻(xiàn)</b></p><p> [1] 謝希仁 計(jì)算機(jī)網(wǎng)絡(luò)(第五版)北京:電子工業(yè)出版社2008.1</p><p> [2] 吳功宜 胡曉英 張仁
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(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)論