2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩25頁(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、<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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論