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

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計 報 告</p><p>  課程名稱:面向?qū)ο蟪绦蛟O(shè)計C++</p><p>  設(shè)計題目: 可隱藏式通信工具 </p><p>  專 業(yè): 計算機(jī)科學(xué)與技術(shù) </p><p>  姓 名: </p><p>  學(xué) 號:

2、 </p><p>  指導(dǎo)教師: 李 曉 虹 </p><p>  2016 年 1 月 10 日</p><p><b>  目錄</b></p><p><b>  1、需求分析3</b></p><p><b>  2、總體設(shè)計

3、3</b></p><p>  2.1應(yīng)用程序結(jié)構(gòu)圖3</p><p><b>  3、詳細(xì)設(shè)計3</b></p><p>  3.1、服務(wù)器端設(shè)計3</p><p>  3.2、客戶端設(shè)計5</p><p>  3.3、可隱藏功能的實(shí)現(xiàn)7</p><p

4、>  4、調(diào)試及運(yùn)行效果7</p><p><b>  5、結(jié)果分析8</b></p><p><b>  6、總結(jié)9</b></p><p><b>  1、需求分析</b></p><p>  近年來,隨著互聯(lián)網(wǎng)的迅速發(fā)展,利用Internet進(jìn)行網(wǎng)際間通訊,以

5、及在網(wǎng)絡(luò)電話、多媒體會議等這些對實(shí)時性要求嚴(yán)格的應(yīng)用中成為研究的熱點(diǎn),而且已經(jīng)是必需的了。Windows環(huán)境下進(jìn)行通訊程序設(shè)計的最基本方法是應(yīng)用Windows Sockets實(shí)現(xiàn)進(jìn)程間的通訊,為此微軟提供了大量基于Windows Sockets的通訊API,如WinSockAPI、WinInetAPI和ISAPI,并一直致力于開發(fā)更快、 更容易的通訊API,將其和MFC集成在一起以使通訊編程越來越容易。本實(shí)例重點(diǎn)介紹使用MFC的CSoc

6、ket類編寫網(wǎng)絡(luò)通訊程序的方法,通過使用CSocket類實(shí)現(xiàn)了網(wǎng)絡(luò)通信程序。</p><p>  隨著應(yīng)用程序的日益增多,受限于桌面屏幕的大小,應(yīng)用程序一般都會以最小化的形式在后臺運(yùn)行,然而這樣并不能給用戶帶來更加靈活和便捷的體驗(yàn),多數(shù)時候反而會給用戶帶來一些麻煩。本基于CSocket類的可隱藏通信工具將應(yīng)用程序在后臺運(yùn)行時做成隱藏形式,給用戶更靈活的的使用方法。</p><p><

7、b>  2、總體設(shè)計</b></p><p>  2.1應(yīng)用程序結(jié)構(gòu)圖</p><p><b>  圖 2-1</b></p><p><b>  3、詳細(xì)設(shè)計</b></p><p>  3.1、服務(wù)器端設(shè)計</p><p>  從CSocket編程模型知

8、道,服務(wù)器端需要兩種套接字,一個用來偵聽連接請求,一個用來與請求連接的套接字建立連接。因此,為程序添加兩個CSocket派生類:SSocListen和CSocRecv,它們與對話框類密切配合,共同完成程序所要求實(shí)現(xiàn)的功能。</p><p><b>  實(shí)現(xiàn)步驟如下:</b></p><p> ?。?)、套接字與對話框類的關(guān)聯(lián)。</p><p>

9、 ?。?)、 給套接字添加讀寫信息的功能。</p><p> ?。?)、在對話框中初始化套接字并偵聽連接請求</p><p> ?。?)、接受連接請求。</p><p><b>  (5)、接收信息。</b></p><p><b> ?。?)、發(fā)送信息。</b></p><p&

10、gt;<b>  部分代碼如下:</b></p><p><b> ?。?)、偵聽請求</b></p><p>  if(m_pCSocListen=new CSocListen(this))</p><p><b>  {</b></p><p>  if(m_pCSocLi

11、sten->Create(1000))</p><p><b>  {</b></p><p>  m_lst_log.AddString("等待連接……");</p><p>  m_pCSocListen->Listen();</p><p><b>  }</

12、b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_lst_log.AddString("初始化失敗,請重新啟動程序");</p><p>  delete m_pCSocListen;}<

13、/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_lst_log.AddString("初始化失敗,請重新啟動程序");</p><p>&

14、lt;b>  }</b></p><p><b> ?。?)、連接請求</b></p><p>  if(pCSocRecv=new CSocRecv(this->m_pDlgSocSvr))</p><p><b>  {</b></p><p>  if(Accept(*

15、pCSocRecv))</p><p><b>  {</b></p><p>  pCSocRecv->m_pCSocFile = new CSocketFile(pCSocRecv);</p><p>  pCSocRecv->m_pCArcIn = new CArchive(pCSocRecv->m_pCSocFile,

16、CArchive::load);</p><p>  pCSocRecv->m_pCArcOut= new CArchive(pCSocRecv->m_pCSocFile,CArchive::store);</p><p>  m_pDlgSocSvr->m_pCSocRecv = pCSocRecv;</p><p>  pCSocRecv =

17、NULL;</p><p>  m_pDlgSocSvr->m_lst_log.AddString("連接成功!");</p><p>  m_pDlgSocSvr->m_lst_log.AddString("歡迎使用CSocket類的可隱藏通信工具!");</p><p>  m_pDlgSocSvr->m

18、_btn_send.EnableWindow(TRUE);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_pDlgSocSvr->m_lst_log.AddString

19、("試圖連接客戶端失??!");</p><p>  delete pCSocRecv;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p>&l

20、t;b>  {</b></p><p>  m_pDlgSocSvr->m_lst_log.AddString("連接套接字初始化失??!");</p><p><b>  }</b></p><p><b>  3.2、客戶端設(shè)計</b></p><p>

21、  客戶端只需要一個套接字,主要是發(fā)送信息。</p><p><b>  實(shí)現(xiàn)步驟如下:</b></p><p> ?。?)、套接字與對話框類的關(guān)聯(lián)。</p><p> ?。?)、給套接字添加讀寫信息的功能。</p><p> ?。?)、在對話框中初始化套接字并偵聽連接請求</p><p> ?。?/p>

22、4)、接受連接請求。</p><p><b> ?。?)、接收信息。</b></p><p><b> ?。?)、發(fā)送信息。</b></p><p><b>  部分代碼如下:</b></p><p><b> ?。?)、建立連接</b></p>

23、;<p>  m_lst_log.AddString("正在連接……");</p><p>  if(m_pCSocSend=new CSocSend(this))</p><p><b>  {</b></p><p>  if(m_pCSocSend->Create())// 創(chuàng)建套接字<

24、;/p><p><b>  {</b></p><p>  if(m_pCSocSend->Connect("localhost",1000))// 服務(wù)器名稱、端口號</p><p><b>  {</b></p><p>  m_pCSocSend->m_pCSoc

25、File = new CSocketFile(m_pCSocSend);</p><p>  m_pCSocSend->m_pCArcIn = new CArchive(m_pCSocSend->m_pCSocFile,</p><p>  CArchive::load);</p><p>  m_pCSocSend->m_pCArcOut = n

26、ew CArchive(m_pCSocSend->m_pCSocFile,</p><p>  CArchive::store);</p><p>  m_lst_log.AddString("連接成功!");</p><p>  m_lst_log.AddString("歡迎使用CSocket類的可隱藏通信工具!");

27、</p><p>  m_btn_send.EnableWindow(TRUE);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_lst_log.Ad

28、dString("連接不成功!");</p><p>  delete m_pCSocSend;// 清除socket所占內(nèi)存</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b&g

29、t;</p><p><b>  {</b></p><p>  m_lst_log.AddString("初始化失敗,請重新啟動程序");</p><p>  delete m_pCSocSend;// 清除socket所占內(nèi)存</p><p><b>  }</b>

30、</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_lst_log.AddString("初始化失敗,請重新啟動程序");</p><p&

31、gt;<b>  }</b></p><p>  3.3、可隱藏功能的實(shí)現(xiàn)</p><p>  在定時器中判斷鼠標(biāo)和窗體的位置,然后使用MoveWindow方法移動窗體,從而實(shí)現(xiàn)應(yīng)用程序的隱藏或顯示。</p><p>  在OnTimeer方法中實(shí)現(xiàn)鼠標(biāo)在窗體位置上的實(shí)時檢測,代碼如下:</p><p>  void C

32、SocSvrDlg::OnTimer(UINT nIDEvent) </p><p><b>  {</b></p><p>  // TODO: Add your message handler code here and/or call default</p><p><b>  CRect rc;</b></p

33、><p>  CRect rect;</p><p>  GetWindowRect(&rect);</p><p>  rc.CopyRect(&rect);</p><p>  CPoint pOint;</p><p>  GetCursorPos(&pOint);</p>&l

34、t;p>  if(rect.top<0 && PtInRect(rect,pOint))</p><p><b>  {</b></p><p>  rect.top=0;</p><p>  MoveWindow(rect.left,rect.top,rc.Width(),rc.Height());</p&g

35、t;<p><b>  }</b></p><p>  else if(rect.top>-3 && rect.top<3 && !PtInRect(rect,pOint))</p><p><b>  {</b></p><p>  rect.top=3-rect

36、.Height();</p><p>  MoveWindow(rect.left,rect.top,rc.Width(),rc.Height());</p><p><b>  }</b></p><p>  CDialog::OnTimer(nIDEvent);</p><p><b>  }</b&

37、gt;</p><p><b>  4、調(diào)試及運(yùn)行效果</b></p><p>  先啟動服務(wù)器端工程,再啟動客戶端工程),出現(xiàn)“連接成功”字樣后,就可以互相發(fā)送消息了。</p><p><b>  運(yùn)行效果如下:</b></p><p>  圖 4-1 通信功能的效果圖</p>&l

38、t;p>  圖 4-2 隱藏功能效果圖,隱藏(左),顯示(右)</p><p><b>  5、結(jié)果分析</b></p><p>  從CSocket編程模型知道,服務(wù)器端需要兩種套接字,一個用來偵聽連接請求,一個用來與請求連接的套接字建立連接。因此,為程序添加兩個CSocket派生類:SSocListen和CSocRecv,它們與對話框類密切配合,共同完成程序

溫馨提示

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

評論

0/150

提交評論