版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 串口通信c++課程設(shè)計
- 暗扣隱藏式彩鋼板屋面施工
- 可隱藏式電動投影屏幕的研究與設(shè)計【11張cad圖紙和說明書】
- 可隱藏式電動投影屏幕的研究與設(shè)計(畢業(yè)論文+全套cad圖紙)(答辯通過)
- 可隱藏式電動投影屏幕的研究與設(shè)計【11張cad圖紙和說明書】
- 隱藏式字幕解碼與顯示系統(tǒng)的FPGA實(shí)現(xiàn).pdf
- 簡單的通信管理系統(tǒng)--課程設(shè)計c++
- c++課程設(shè)計--通信錄管理程序
- c++課程設(shè)計報告
- c++課程設(shè)計ppt
- 隱藏式安全氣囊儀表板優(yōu)化設(shè)計及試驗(yàn)研究.pdf
- c++課程設(shè)計--c++程序設(shè)計語言
- c++課程設(shè)計-- c++面向?qū)ο蟪绦蛟O(shè)計
- c++掃雷課程設(shè)計報告
- 中南大學(xué)c++課程設(shè)計
- c++課程設(shè)計-教學(xué)游戲
- c++課程設(shè)計——乘積最大
- c++課程設(shè)計——矩陣類
- c++課程設(shè)計---商場管理
- c++課程設(shè)計(文章編輯)
評論
0/150
提交評論