2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  《計(jì)算機(jī)網(wǎng)絡(luò)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  姓 名: </p><p>  學(xué) 號(hào): </p><p>  班 級(jí): 081

2、 </p><p>  專 業(yè): 計(jì)科 </p><p>  指導(dǎo)教師: 孔廣黔 </p><p>  時(shí) 間: 2011年6月21日 </p><p><b>  目 錄</b&g

3、t;</p><p>  一、 課程設(shè)計(jì)目的 …………………………………………………… 3</p><p>  二、課程設(shè)計(jì)題目描述和要求…………………………………………3</p><p>  課程設(shè)計(jì)報(bào)告內(nèi)容…………………………………………………3</p><p>  3.1、聊天工具服務(wù)器端的實(shí)現(xiàn)……………………………………3</p

4、><p>  3.2、聊天工具客戶端的實(shí)現(xiàn)………………………………………6</p><p>  3.3課程設(shè)計(jì)結(jié)果展示……………………………………………9</p><p>  總結(jié)………………………………………………………………12</p><p>  參考書目…………………………………………………………12</p><p&g

5、t;<b>  一、課程設(shè)計(jì)目的</b></p><p>  1.1、加深對(duì)TCP/IP協(xié)議的理解;</p><p>  1.2、掌握用Socket編程實(shí)現(xiàn)聊天工具。</p><p>  課程設(shè)計(jì)題目描述和要求</p><p>  2.1、使用Socket編程實(shí)現(xiàn)聊天工具服務(wù)器端;</p><p>

6、;  2.2、使用Socket編程實(shí)現(xiàn)聊天工具客戶端;</p><p>  2.3、撰寫課程設(shè)計(jì)報(bào)告。</p><p>  三、課程設(shè)計(jì)報(bào)告內(nèi)容</p><p>  3.1、聊天工具服務(wù)器端的實(shí)現(xiàn)</p><p>  3.1.1、先建立一個(gè)MFC,選dialogBased,工程名為L(zhǎng)X2,要選擇Window Sockets。</p>

7、;<p>  出現(xiàn)Dialog以后,編輯界面,使其如上圖所示。控件對(duì)應(yīng)的變量如下表:</p><p>  3.1.2、建立scocket 連結(jié)</p><p>  首先,在BOOL CLx2Dlg::OnInitDialog()末尾添加語句,使其如下所示:</p><p>  m_send.EnableWindow(FALSE);//使發(fā)送按鈕變灰&

8、lt;/p><p>  return TRUE; // return TRUE </p><p>  在Lx2工程里添加新類:CServer。繼承自CSocket</p><p>  在lx2Dlg.h里添加頭文件#include "Server.h"</p><p>  在CLx2Dlg類里添加private變量

9、:CServer m_server; CServer m_recv</p><p>  在對(duì)話框的圖象上雙擊“偵聽”按鈕,在里面添加如下代碼,使其如下所示:</p><p>  void CLx2Dlg::OnListen() </p><p><b>  {</b></p><p>  m_server.Create(

10、1000);//使用1000號(hào)端口</p><p>  m_server.Listen();//偵聽</p><p><b>  }</b></p><p>  在對(duì)話框圖象上再雙擊“發(fā)送”按鈕,添加代碼,如下所示:</p><p>  void CLx2Dlg::OnSend() </p&g

11、t;<p><b>  {</b></p><p>  UpdateData(TRUE);//更新數(shù)據(jù),使m_msg得到當(dāng)前框中文本</p><p>  m_recv.Send(m_msg, 255);//發(fā)送數(shù)據(jù)</p><p>  m_ctrl.SetSel(0, -1);//全選發(fā)送框文字</p>&

12、lt;p>  m_ctrl.ReplaceSel("", TRUE);//將發(fā)送框置空</p><p><b>  }</b></p><p>  3.1.3、利用OnAccept和OnReceive函數(shù)處理socket消息。</p><p>  在Server.cpp里添加頭文件#include "lx2D

13、lg.h"。</p><p>  首先,在lx2工程的編輯界面點(diǎn)右鍵,選Class Wizard,在classname欄目里面找到CServer類,添加OnAccept和OnReceive函數(shù)并且雙擊下面的Member function欄目,分別為兩個(gè)函數(shù)添加代碼。</p><p>  void CServer::OnAccept(int nErrorCode)</p>

14、;<p><b>  {</b></p><p>  // TODO: Add your specialized code here and/or call the base class</p><p>  CSocket::OnAccept(nErrorCode);</p><p>  ((CLX2Dlg*)(AfxGetApp

15、()->m_pMainWnd))->ShowAccept();</p><p>  //在這里僅僅添加了這一句,因?yàn)镃Lx2Dlg類是發(fā)送接收消息的主窗口,</p><p>  //而且應(yīng)用程序發(fā)送接收的消息也在CLx2Dlg對(duì)象實(shí)例中進(jìn)行,</p><p>  //所以當(dāng)CServer類的對(duì)象收到客戶機(jī)的Connect消息時(shí),</p>&

16、lt;p>  //便可調(diào)用CLx2Dlg對(duì)象中的ShowAccept() 函數(shù)處理。</p><p><b>  }</b></p><p>  這步以后,可以為CLx2Dlg類里添加public成員函數(shù)ShowAccept()。</p><p>  void CLx2Dlg::ShowAccept()</p><p&

17、gt;<b>  {</b></p><p>  m_server.Accept(m_recv);</p><p>  AfxMessageBox("Server端連接成功");</p><p>  m_send.EnableWindow(TRUE);//連接成功,可以發(fā)送</p><p> 

18、 m_listen.EnableWindow(FALSE);//同時(shí)禁止偵聽按鈕</p><p><b>  }</b></p><p>  于是,當(dāng)客戶機(jī)調(diào)用m_client.Connect(m_ip, 1000);這句時(shí),主機(jī)server端發(fā)現(xiàn),并調(diào)用ShowAccept函數(shù)來建立連接。執(zhí)行完以后,Socket連接便被建立。</p><p

19、>  3.1.4、添加發(fā)送聊天信息的函數(shù)。</p><p>  注意到前面點(diǎn)擊發(fā)送按鈕的OnSend() 函數(shù)已經(jīng)添加好了,在Lx2工程中只要添加Server端的接收消息和顯示消息功能就可以進(jìn)行消息的傳送。</p><p>  在CServer類里像添加OnAccept() 一樣添加成員函數(shù)OnReceive()。</p><p>  void CServer

20、::OnReceive(int nErrorCode) </p><p><b>  {</b></p><p>  // TODO: Add your specialized code here and/or call the base class</p><p>  CSocket::OnReceive(nErrorCode);</p

21、><p>  ((CLx2Dlg*)(AfxGetApp()->m_pMainWnd))->ShowMsg();</p><p><b>  }</b></p><p>  建立連接后,一方一旦發(fā)送數(shù)據(jù),另一方的CSocket派生類便調(diào)用這個(gè)函數(shù)。其中代碼可以參考前面OnAccept() 進(jìn)行理解。</p><p&g

22、t;  在CLx2Dlg里添加成員函數(shù)ShowMsg()</p><p>  void CLx2Dlg::ShowMsg()</p><p><b>  {</b></p><p>  char buf[255];</p><p>  m_recv.Receive(buf, 255);//接收消息到buf里面,長(zhǎng)度

23、255字節(jié)。</p><p>  CString msg;</p><p>  msg.Format("%s", buf);//用AfxMessageBox函數(shù)顯示接收到的字符竄。</p><p>  AfxMessageBox(msg);//這里注意CString類的用法</p><p><b>

24、  }</b></p><p>  3.2、聊天工具客戶端的實(shí)現(xiàn)</p><p>  3.2.1、先建立一個(gè)MFC,選dialogBased,工程名為L(zhǎng)X1,要選擇Window Sockets。</p><p>  出現(xiàn)Dialog以后,編輯界面,使其如上圖所示??丶?duì)應(yīng)的變量如下表:</p><p>  3.2.2、建立scoc

25、ket 連結(jié)</p><p>  首先,Lx1工程里添加新類:CClient。繼承自CSocket</p><p>  在CLx1Dlg類里添加private變量:CClient m_client;</p><p>  雙擊對(duì)話框圖象上的“連接”按鈕,添加代碼:</p><p>  void CLx1Dlg::OnConnect() <

26、/p><p><b>  {</b></p><p>  UpdateData(TRUE);</p><p>  m_client.Create(1001);//使用1001號(hào)端口</p><p>  if(m_client.Connect(m_ip, 1000))//連接目標(biāo)地址,1000端口</p>

27、<p><b>  {</b></p><p>  AfxMessageBox("Client端連接成功");</p><p>  m_send.EnableWindow(TRUE);//連接成功,可以發(fā)送</p><p>  m_connect.EnableWindow(FALSE);//同時(shí)禁止連

28、接按鈕</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_client.Close();//如果連接失敗就關(guān)閉</p><p>  AfxMes

29、sageBox("連接失敗");</p><p><b>  }</b></p><p><b>  }</b></p><p>  雙擊發(fā)送按鈕,添加代碼:</p><p>  void CLx1Dlg::OnSend() </p><p><b&

30、gt;  {</b></p><p>  UpdateData(TRUE);//更新數(shù)據(jù),使m_msg得到當(dāng)前框中文本</p><p>  m_client.Send(m_msg, 255);//發(fā)送數(shù)據(jù),長(zhǎng)度255字節(jié)</p><p><b>  }</b></p><p>  3.2.3、添加接

31、收聊天信息的函數(shù)。</p><p>  在Client.cpp中添加 #include "Lx1Dlg.h"</p><p>  在CClient類中添加函數(shù)OnReceive</p><p>  void CClient::OnReceive(int nErrorCode) </p><p><b>  {&l

32、t;/b></p><p>  // TODO: Add your specialized code here and/or call the base class</p><p>  ((CLx1Dlg*)(AfxGetApp()->m_pMainWnd))->ShowMsg();</p><p>  CSocket::OnReceive(nEr

33、rorCode);</p><p><b>  }</b></p><p>  在CLx1Dlg類中添加函數(shù)ShowMsg</p><p>  void CLx1Dlg::ShowMsg()</p><p><b>  {</b></p><p>  char buf[255

34、];</p><p>  m_client.Receive(buf, 255);//接收消息到buf里面,長(zhǎng)度255 字節(jié)。</p><p>  CString msg;</p><p>  msg.Format("%s", buf);</p><p>  AfxMessageBox(msg);//用AfxM

35、essageBox函數(shù)顯示接收到字 符竄。</p><p><b>  }</b></p><p>  3.2.4、收尾工作:即在對(duì)話框銷毀的時(shí)候,關(guān)閉Socket連接,釋放資源。</p><p>  在CLx1Dlg類中添加函數(shù)OnDestroy</p><p>  void CLx1Dlg::OnDestroy()

36、</p><p><b>  {</b></p><p>  CDialog::OnDestroy();</p><p>  m_client.Close();//關(guān)閉套接字</p><p><b>  }</b></p><p>  3.3課程設(shè)計(jì)結(jié)果展示</p

37、><p>  3.3.1、輸入ip建立連接</p><p>  3.3.2、連接成功</p><p>  3.3.3、服務(wù)器端編輯“hello”并發(fā)送</p><p><b>  客戶端成功接收</b></p><p>  3.3.4、客戶端編輯并發(fā)送“very good!”,服務(wù)器端成功接收<

38、/p><p><b>  總結(jié)</b></p><p>  課程設(shè)計(jì)一向是我比較喜歡的實(shí)踐項(xiàng)目,因?yàn)閺闹袝?huì)學(xué)到許多東西,既檢驗(yàn)了我們前段時(shí)間理論知識(shí)的學(xué)習(xí)效果,又鍛煉了我們的動(dòng)手實(shí)踐能力。</p><p>  通過本次計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì),我更加充分的理解了課本上的知識(shí),加強(qiáng)了自己掌握和理解計(jì)算機(jī)網(wǎng)絡(luò)理論原理的能力,培養(yǎng)了自己的實(shí)際動(dòng)手能力與綜合設(shè)計(jì)

39、能力,并提高了自己的技術(shù)素質(zhì)。而且我意識(shí)到我們所學(xué)的東西將來都是要付諸實(shí)踐的,所以一切要從實(shí)際情況出發(fā),理論聯(lián)系實(shí)際,這樣才能真正發(fā)揮我們所具備的能力。經(jīng)過此次課程設(shè)計(jì),我向我成功的目標(biāo)又邁進(jìn)了一步。</p><p><b>  參考書目:</b></p><p>  Andrew S.Tanenbaum.計(jì)算機(jī)網(wǎng)絡(luò).北京:清華大學(xué)出版社.1998.</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論