版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、大學(xué)研究生堂下考試答卷1學(xué)期2014-2015學(xué)年第考試科目姓名年級專業(yè)2014年12月28日面向?qū)ο蟪绦蛟O(shè)計課程報告學(xué)號:姓名:學(xué)院:題 目基于MFC的聊天室與FTP文件傳輸系統(tǒng)選 題 勻匕冃 景首先經(jīng)過一個學(xué)期關(guān)于 C+的學(xué)習(xí),我們希望能夠運用所學(xué)的知識 做出一些具有使用價值的產(chǎn)品。另外,由于本身專業(yè)是通信工程,基于 對通信軟件編程方面興趣,希望能夠在完成課程設(shè)計的同時能夠加深自 己對通信底層原理的理解。因此我們選擇的題目是基于 MFC的網(wǎng)絡(luò)聊天 室與FTP文件傳輸?shù)木幊?。并且希望最后編寫好的程序能夠在同學(xué)之間 進(jìn)行交流以及文件共享方面具有一定的實用價值。最后,希望在完成編 程的過程中提高
2、自己C+方面的能力以適應(yīng)今后的學(xué)習(xí)與發(fā)展。實現(xiàn)的功能:1. 支持多個客戶端與服務(wù)器端之間的連接。2. 支持客戶端與客戶端之間的通信。3. 支持服務(wù)器端與客戶端之間的通信。4. FTP客戶端方面支持文件的下載、上傳、以及刪除的功能。5. FTP文件傳輸方面擁有兩個客戶端,一個是用于單線程的,另一個是 用于多線程的,本實例對兩個客戶端的工作方式進(jìn)行了對比。實現(xiàn)環(huán)境及開發(fā)工具:1. wi ndows 7/8.1操作系統(tǒng)(實現(xiàn)環(huán)境)2. visual studio2010/2013 (開發(fā)工具)3. MSDN2008 (幫組文檔)4.StarUML ( UML 制圖工具)基 礎(chǔ) 知 識由于本實例是通信
3、網(wǎng)絡(luò)編程,使用到了很多網(wǎng)絡(luò)通信方面的知識, 其中包括 Win Sock編程以及 Winlnet編程。下面介紹一下兩類編程的基 礎(chǔ)知識。一、Win Sock 編程1.介紹套接字是支持TCP/IP網(wǎng)絡(luò)通信的基本操作單元。多個 TCP連接或 多個應(yīng)用程序進(jìn)程可能需要通過同一個TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計算機(jī)操作系統(tǒng)為應(yīng)用程序與 TCP/IP協(xié)議交互提供了稱為套接字(Socket)的接口。套接字為不同的應(yīng)用 進(jìn)程使用網(wǎng)絡(luò)協(xié)議進(jìn)行數(shù)據(jù)交換提供了接口,主要用于應(yīng)用層與傳輸層 之間。套接字分為三類:流式套接字、報文套接字以及原始套接字。其中 最常使用的是流式套接字與報文套
4、接字。流式套接字是面向連接的,在數(shù)據(jù)傳輸之前需要在雙方之間建立起連接,主要用于TCP業(yè)務(wù);報文套接字是面向無連接的,在數(shù)據(jù)傳輸之間無需建立連接,只需要知道對方 的IP網(wǎng)絡(luò)地址已經(jīng)對應(yīng)的業(yè)務(wù)端口就可以把業(yè)務(wù)發(fā)送到目的端,報文套 接字主要是用于傳輸基于UDP的業(yè)務(wù)。由于Windows提供了 SOCKET的API函數(shù),因此簡化了整個套接字應(yīng)用編程的難度,但是對于一般的初學(xué)者來說使用SOCKET API函數(shù)進(jìn)行編程還是具有一定的難度,其主要適用于對整個協(xié)議工作過程有深入 了解的專業(yè)人士使用。因此為了降低編程的門檻,微軟公司將SOCKETAPI函數(shù)圭寸裝為了一個新的類 CAsyncSocket類,通過調(diào)
5、用 CasyncSocket 類的成員函數(shù)就能夠完成網(wǎng)絡(luò)編程的功能。但是,CasyncSocket的封裝性對于一般用戶來說還是太過于復(fù)雜,對于一般人的使用還是有一定的 難度,因此微軟又在 CAsyncSocket類的基礎(chǔ)上派生了 CSocekt類,極大 地簡化了套接字的編程。本實例采用的就是CSocket編程。2.套接字工作過程由于本實例是采用 C/S模式進(jìn)行編程,是由客戶端與服務(wù)器端組成 的。流式套接字與報文套接字編程的原理是不一樣的。 流式套接字原理流式套接字是面向連接的,在進(jìn)行數(shù)據(jù)傳輸之前需要在服務(wù)器與客戶 端之間先建立起連接。其建立連接的過程主要分為四步。i 服務(wù)器端初始化套接字并綁定
6、端口。ii.服務(wù)器端套接字啟動監(jiān)聽狀態(tài),調(diào)用 Listen ()函數(shù)。iii .客戶端端建立套接字并綁定端口。iv. 客戶端請求連接。v. 服務(wù)器端接受連接請求。其工作過程見圖1.1??蛻籼煞?wù)器瑞圖1.1:流式套接字工作過程 報文套接字工作原理報文套接字不需要在數(shù)據(jù)傳輸之間建立連接,只需綁定對應(yīng)的端口然 后將數(shù)據(jù)發(fā)往對應(yīng)的網(wǎng)絡(luò)地址即可。其工作過程見圖1.2??蛻舳朔莼矶藞D1.2 :報文套接字工作過程二、Winlnet 編程Winln et是win dows in ternet擴(kuò)展應(yīng)用程序高級編程接口,是專為開發(fā) 具有In ternet功能的客戶機(jī)端應(yīng)用程序而提供的。它有兩種形式:Winln
7、et API包含一個C語言的函數(shù)集,MFC Winlnet類則是對前者的面向?qū)ο?的封裝。Winlnet主要用于In ternet關(guān)于FTP文件傳輸協(xié)議,HTTP超文 本傳輸協(xié)議以及Gopher文件傳輸協(xié)議。 MFC中 Winlnet包含的類i. Ci nternetSession類:由CObject類派生,代表應(yīng)用程序的一次 In ternet 會話,每個訪問In ternet的應(yīng)用程序都需要一個 Cl nternetSession類對象。ii. 連接類:連接類主要包括CinternetConnection類以及它的派生類CFtpConnection類、CHttpConnection 類和
8、CGopherConnection類。iii. 文件類:包括ClnternetFile類以及它派生的 CHttpFile類和CGopherFile 類,另外文件查找類CFileFind也是文件類。iv. CInternetException類:MFC Winlnet類的成員函數(shù)在執(zhí)行時所發(fā)生的 錯誤或異常,往往用try/catch邏輯結(jié)構(gòu)來處理異常。 Winlnet編程的步驟i. 創(chuàng)建Cl nternetSession類對象,創(chuàng)建并初始化In ternet會話ii. 創(chuàng)建連接對象類,建立 Cl nternetSessio n對象與網(wǎng)絡(luò)服務(wù)器的連接,也就是應(yīng)用程序與服務(wù)器的連接。本實例創(chuàng)建CFt
9、pC onn ection類。iii. 創(chuàng)建文件檢索類,對文件進(jìn)行檢索。iv. 倉建異常類 Cl netnetException類,處理錯誤。V.關(guān)閉各種類,釋放資源。三、多線程編程Windows本身是一個多進(jìn)程多線程的操作系統(tǒng),因此在日常的應(yīng)用 編與中取好能夠使用多線程的技術(shù)。在 windows環(huán)境下開發(fā)多線程應(yīng)用 程序可以利用提供的 Win32API接口函數(shù),也可以利用微軟提供的 MFC 類庫進(jìn)行開發(fā)。兩種方式對于多線程編程原理是一樣的,用戶可以根據(jù) 需要選擇相應(yīng)的工具。本實例主要用到的是MFC類庫實現(xiàn)多線程調(diào)度與 處理。MFC類庫提供了對多線程編程的支持,使得多線程能方便的實現(xiàn)。MFC區(qū)
10、分兩種類型的線程:工作線程和用戶接口線程。工作線程沒有消 息機(jī)制,通常用來執(zhí)行后臺計算和維護(hù)任務(wù)。MFC為用戶接口線程提供 消息機(jī)制,用來處理用戶的輸入,響應(yīng)用戶產(chǎn)生的事件消息。但對于Win32 的API來說,這兩種線程并沒有區(qū)別,它只需要線程的啟動地址便啟動 線程執(zhí)行任務(wù)。用戶接口線程的一個典型應(yīng)用就是類CWinApp,類CWinApp是CWinThread類的派生類,應(yīng)用程序的主線程是由它提供, 并由它負(fù)責(zé)處理用戶產(chǎn)生的事件和消息。系 統(tǒng) 設(shè) 計本實例借用StarUML軟件繪制了整個程序的 UML類視圖,這個類視 圖在前期的代碼編寫上提供了很多幫助。UML類視圖能夠清晰地表明類與 類之間的
11、關(guān)系以及各個類所具有成員函數(shù)與成員變量。1.客戶端類視圖、+CnA«ept(j; vendCConnectDlgCkiut爭襯千容祿呢轅-鮒藥匹閔晚申2.服務(wù)器端類視圖CSetPortOlg+m uiHtPOft; UFJT+On&HCkk«dB4jttQnCk>M0:皿CStrvcrDlg*OflR«#ive(): void+m_5trS*rKj: CSVnng *17*SIM嗎:CUS(84M +fn_sodefl.ist: CPt/Ust +mjrt0Oet: CbstefiSock' Hn.btr.Sfttjng: CButton+C
12、nQuwt nd 畑砒t_;Y0d OHjlitdfJ- «id Eirwe: fld to占仲”;:dmjirfw, Glrnq -n_jtS<*wiinfiCSVfiL呵叭:口軸 s tcimira: 血iwSitamtjo 期 w:缶 jmr -jra*: kr,r.她nDtsor碩:疵KFCh'.-iK! t 二咸.tjt 4G-Cfo詁-二mi Nnoe /jd 垃直:MU tGine£r,wpl%' f&Mfi: 3NL<0恤:訕flttr_btp: irrert jtrr 知 JtDQ r'Kl CB.23- LJ3
13、HD:Hfn_riOcnlMn!(3riig 'Hr.fllSDrrtrAdtfilt Emq 嘰啊te*紳tt _illicit jr < 毆,:哦.Ns;1+0nS*tPott(): +crKMtdBirttflns«nd()! vfttd +Oft(f«ti<l04/ttoriCloseO: yok!KctSodietMsgf,);喃-rSIrnq urtfart. UWT7懸扁卻:.mid-QiQutrfl? fle fr砂.;: 3001 胡國二:KTO- 尙豈.:比0-L-Stulu 占-曲L- !: 也iDWCtl跡町:*M1如”擊丘止dr
14、re ht 陶rsmi C5r_g +m_SrL5=rra' Gtr Hl _ 匸 trill OiS.tin_blrDMilttd: Qitok 師一皿HDK 0IJ1W trr”dri:-fiy Fft.mnFTP文件傳輸客戶端、單線程FTP客戶端設(shè)計步驟1.之前在CClientDIg類中已經(jīng)添加了兩個對話框的資源,為 IDD_DIALOG_FTP對話框添加控件以及為控件添加成員變量。 其界面布 局以及成員變量之間的關(guān)系分別如圖 2.1表2.1所示。在頭文件中添加頭 文件 #in cludevafx in et.h。系 統(tǒng) 實 現(xiàn)FTP窩戶端杳詢下載上傳退出圖2.1: FTP客戶端
15、表2.1:單線程客戶端添加成員變量控件類型ID變量名控件類廠ID變量名CButt onIDC_BUT TON_DO WNLOA Dm_bt nDo wn loadCButt onIDC_BUT TON_R MOVEm_bt nremoveCButt onIDC_BUTTON_U PLOADm_bt nUp loadCStri ngIDC_EDI T_PWDm_strPwdCStri ngIDC_EDI T_USER NAMEm_strUser n ameCStri ngIDC_EDI T_SERVE RNAMEm_strServ ern ameCListBoxIDC_LIST FIELmi s
16、tFileCButt onIDOKm_bt nq uery2. 為按鈕添加消息響應(yīng): 為“查詢”按鈕添加消息響應(yīng) void CFtpDlg:OnQuery(),用于查詢FTP 服務(wù)器端上的文件。具體代碼如下:void CFtpDlg:O nQuery()/ TODO:在此添加控件通知處理程序代碼m_bt nDow nload.E nableWi ndow(TRUE);strflag = ""/初始化初始路徑UpdateData(TRUE);while (m_listFile.GetCount() != 0)m_listFile.DeleteString(0); 清空列表 框
17、List("");/查詢服務(wù)器上的文件m_bt nUpload.E nableWi ndow(TRUE);m_bt nDow nl oad.E nableWi ndow(FALSE);m_bt nremove.E nableWi ndow(FALSE); _ 為“下載”按鈕添加消息響應(yīng) void CFtpDlg:OnDownload(),用于下載 FTP服務(wù)器端的文件。具體代碼如下:void CFtpDlg:O nDow nload()/ TODO:在此添加控件通知處理程序代碼int sel = m_l istFile.GetCurSel();CStri ng strfil
18、e name;m_l istFile.GetText(sel, strfile name);/獲取要下載文件的文件名if (strfile name.GetAt(0) !='')判斷是否為文件夾,如果不為文件夾便下載CStri ng strpath name;CFileDialog dlg(FALSE, "", strfile name);/新建一個文件對話框, FALSE表示為存儲類型對話框,詳情見 MSDNif (dlg.DoModal() = IDOK)strpath name = dlg.GetPathName();/ 保存文件要存儲的路徑strfi
19、le name = strflag + strfile name;if (Dow nl oad(strfile name, strpath name)/調(diào)用 dow nl oad 函數(shù)下 載文件MessageBox('下載成功");elseMessageBox('下載失敗");elseMessageBox("不能下載目錄"); 為“上傳”按鈕添加消息響應(yīng) void CFtpDlg:OnUpload(),用于上傳文 件到FTP服務(wù)器。具體代碼如下:void CFtpDlg:O nUpload()/ TODO:在此添加控件通知處理程序代碼Up
20、dateData(TRUE);CStri ng strfile name;CStri ng strpath name;CFileDialog dlg(TRUE);/創(chuàng)建用于上傳類型的文件對話框if (dlg.DoModal() = IDOK)strfile name = dlg.GetFileName();保存文件名 strpath name = dlg.GetPathName();保存文件路徑 if (Upload(strpath name, strfile name)/碉用上傳函數(shù)MessageBox("上傳成功");elseMessageBox("上傳失敗&
21、quot;);elseMessageBox('請選擇文件"); 為“刪除”按鈕添加消息響應(yīng) void CFtpDlg:O nRemove(),用于刪除 FTP服務(wù)器上的文件。具體代碼如下:void CFtpDlg:O nRemove()刪除文件/ TODO:在此添加控件通知處理程序代碼UpdateData(TRUE);Clntern etSessi on* psessi on;CFtpC onnection* pconn ect;pconnect = NULL;psessi on= newCI nternetSessio n( AfxGetAppName(),1,PRE_CO
22、NFIG_INTERNET_ACCESS);trypconnect =psessio n->GetFtpC onn ectio n(m _strServernam】m_strUser name, m_strPwd);一 一catch (Clntern etExceptio n* e)e->Delete();pconn ect->Close();int sel = m_l istFile.GetCurSel();CStri ng strfile name;m_listFile.GetText(sel, strfile name);if (strfile name.GetAt(O
23、) !='')int flag=MessageBox("是否刪除文件","刪除", MB_YESNO); if (flag = IDYES)pconn ect->Remove(strfile name);MessageBox('刪除成功");elseMessageBox('不能刪除文件夾");3為CFtpDIg類添加成員函數(shù)添加用于查詢服務(wù)器文件的函數(shù) void CFtpDlg:List(CStri ng strsource name) 具體代碼:void CFtpDlg:List(CStri n
24、g strsource name)/新建一個In ternet會話建立一個用于ftp連接的指針 /建立一個用于文件查詢的指針Clntern etSessi on* psessi on;CFtpC onnection* pconn ect;CFtpFileFind* pfilefind;CStri ng strfile name; pconnect = NULL; pfilefi nd = NULL;BOOL bContin ue;psession = new ClnternetSession();初始化 internet 會話對象 trypconnect =psessio n->GetF
25、tpC onn ectio n(m_strServernamm_strUsername, m_strPwd);/通過in ternet會話對象調(diào)用函數(shù)創(chuàng)建 ftp連接 一 一catch (Clntern etExceptio n* e)e->Delete(); pconnect = NULL;if (pc onnect != NULL)/初始化文件查找指pfilefind = new CFtpFileFind(pconnect);IllibCo nti nue = pfilefi nd->Fi ndFile("*");/ 如果為初始路徑查找全部文件,返回值為bo
26、ol型elsebContinue = pfilefi nd->Fi ndFile(strsource name);/ 查找相應(yīng)路 徑文件if (!bCo ntinue)pfilefi nd->Close();pfilefi nd = NULL;while (bC ontinue)bCo ntinue = pfilefi nd->Fi ndNextFileA();/繼續(xù)查找下一個文件strfile name = pfilefi nd->GetFileName();/獲得文件名if (pfilefi nd->lsDirectory()判斷是否為目錄屮括號顯示strfi
27、le name = "" + strfile name + ""/如果為目錄則加上表框中m_listFile.AddStri ng(strfile name);/將文件名加入到列if (pfilefi nd != NULL)pfilefi nd->Close();pfilefi nd = NULL;delete pfilefi nd;if (pc onnect != NULL)pconn ect->Close();delete pconn ect;delete psessi on;添加響應(yīng)單擊列表框的消息效應(yīng)void CFtpDlg:OnDb
28、lclkListFile(),用于獲取列表框文件的信息。具體代碼:void CFtpDlg:O nSelcha ngeListFile()/ TODO:在此添加控件通知處理程序代碼m bt nq uery.E nableWi ndow(TRUE);m_bt nremove.E nableWi ndow(TRUE);m_bt nDow nl oad.E nableWi ndow(TRUE); 添加響應(yīng)雙擊列表框的消息響應(yīng) void CFtpDlg:OnSelchangeListFile(), 用于雙擊列表框時獲取信息。代碼如下:void CFtpDlg:O nDblclkListFile()/
29、TODO:在此添加控件通知處理程序代碼CStri ng strfile name;int sel = mistFile.GetCurSel();/獲得雙擊文件在列表框中的位置索引一mistFile.GetText(sel, strfile name); / 調(diào)用 gettext 獲得文件名并將其 存入字符串中int length = strfilename.GetLength(); /獲取文件名的長度 if (strfile name.GetAt(O)='')判斷是否為文件夾strfile name = strfile name.Mid(1, le ngth - 2);strf
30、lag += strfile name + "/"/ 保存新的路徑while (m_listFile.GetCount() != 0) m_listFile.DeleteString(0); 清空列表 框List(strflag);調(diào)用列表框查詢新路徑下的文件 添加下載文件函數(shù),用于下載服務(wù)器端的文件BOOLCFtpDlg:Dow nload(CStri ng strfile name, CStri ng strpath nameBOOL CFtpDlg:Dow nload(CStri ng strfile name, CStri ng strpath name)Updat
31、eData(TRUE);Clntern etSessi on* psessi on;CFtpC onnection* pconn ect;pconnect = NULL;psessi on = newCI nternetSessio n( AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);trypconnect =psessio n->GetFtpC onn ectio n(m _strServernam】m_strUser name, m_strPwd);一 一catch (Clntern etExceptio n* e)e->Delet
32、e();pconn ect->Close();return FALSE;if (pc onnect != NULL) if (!pc onn ect->GetFile(strfile name, strpath name)/調(diào)用 getfile 文件 下載文件pconn ect->Close();delete pconn ect;delete psessi on;return FALSE;if (pc onnect != NULL)pconn ect->Close();delete pconn ect;delete psessi on;return TRUE; 添加上傳
33、文件函數(shù),用于上傳文件到服務(wù)器端BOOLCFtpDlg:Upload(CStri ng strpath name, CStri ng strfile name。代碼如下:BOOL CFtpDlg:Upload(CStri ng strpath name, CStri ng strfile name)UpdateData(TRUE);Clntern etSessi on* psessi on;CFtpC onnection* pconn ect;pconnect = NULL;psessi on= newCI nternetSessio n( AfxGetAppName(),1,PRE_CONF
34、IG_INTERNET_ACCESS);trypconnect =psessio n->GetFtpC onn ectio n(m _strServernam】m_strUser name, m_strPwd);一 一catch (Clntern etExceptio n* e) e->Delete();pconn ect->Close();return FALSE;if (pc onnect != NULL)if (!pco nn ect->PutFile(strpath name, strfilename)/上傳文件pconn ect->Close(); de
35、lete pconn ect; delete psessi on; return FALSE;if (pc onnect != NULL)pconn ect->Close();delete pconn ect;delete psessi on;return TRUE;4.為CFtpDlg類添加成員變量CString strflag,用于存儲查詢文件的路徑。二、多線程FTP文件傳輸客戶端設(shè)計步驟由于MFC中的多線程分為用戶接口線程和工作線程,本實例主要用到的是工作線程。工作線程主要作用是在需要啟動該線程函數(shù)的時候只 需調(diào)用AfxBeginThread()函數(shù)即可。此函數(shù)的作用是調(diào)用對應(yīng)的線
36、程函數(shù) 以實現(xiàn)對應(yīng)的功能。功能函數(shù)的函數(shù)原型如下:UINT ThreadFu nc(LPVOID pParam) if(pParam=NULL)AfxEn dThread(NULL);其中參數(shù)pParam是一個空指針,其可以指向任意的數(shù)據(jù)類型,只需在對 應(yīng)的線程函數(shù)下編寫函數(shù)的功能即可。一樣,詳情見圖2.1和表2.1。 2為按鈕添加消息響應(yīng) 為“查詢”按鈕添加消息響應(yīng) 詢文件的線程函數(shù)。 為“下載”按鈕添加消息響應(yīng) 動下載文件的線程函數(shù)。 為“上傳”按鈕添加消息響應(yīng) 上傳文件的線程函數(shù)。 為“刪除”按鈕添加消息響應(yīng) 刪除文件的線程函數(shù)。1.為IDD_DIALOG_MTFTP對話框添加相應(yīng)的控件
37、,然后為相應(yīng)的控件 添加成員變量。界面布局與成員變量的添加均與之前單線程FTP客戶端void MTFtpDlg:OnQuery(),用于啟動查 void MTFtpDlg:OnDownload(),用于啟 void MTFtpDlg:OnUpload(),用于啟動 void MTFtpDlg:OnRemove(),用于啟動3為CMTFtpDlg類添加成員函數(shù)和成員變量添加成員變量CString strhold,用于存儲查詢路徑,添加成員函數(shù)void MTFtpDlg:OnDblclkListFilemt(),用于響應(yīng)鼠標(biāo)雙擊列表框消息,用于獲 取問價信息。4. 功能函數(shù)編寫在MTFtpDlg類
38、中添加一個頭文件mtftp.h,用于編寫各個線程函數(shù), 其各功能函數(shù)的編程與之前的單線程FTP客戶端的編程幾乎一樣,只需在各個對應(yīng)的線程函數(shù)內(nèi)編寫即可。由于mtftp.h中使用了 MFC的類庫和 Winlnet的 函數(shù),所以 需要在 mtftp.h中添加 頭文件 #include"MTFtpDlg.h",#include<afxinet.h>。三、運行結(jié)果由于自己之前自學(xué)過C+編程,大學(xué)本科時也開設(shè)了相關(guān) MFC編程 的課程,所以對C+編程有一定的了解。但是因為對于 C+編程的基本 語法是通過自學(xué)的,還是有一定的局限性,因此在上面向?qū)ο蟪绦蛟O(shè)計 這門課的過程中老
39、師還是幫助我解決了許多之前一直困擾我的疑惑。在課 程 小 結(jié)上課的過程中以及在課后關(guān)于程序的編寫我都花了大量的精力,雖然比 較辛苦但是我還是比較快樂,特別滿足于當(dāng)遇到困難之后通過各種方法 將其解決之后的快感。在做課程設(shè)計的過程中和組員一起收獲了很多的快樂,不僅能夠鞏 固C+語言的基本理論知識,而且還能夠發(fā)現(xiàn)自己的不足,在整個過程 中感覺C+語言具有語言簡潔、使用靈活、執(zhí)行效率高等特點。另外也 發(fā)現(xiàn)了理論知識和實際動手操作還是有一定的區(qū)別,在整個過程中更加 深刻地理解了 C+的抽象性、封裝性、繼承性、和多態(tài)性。通過本次的 課程設(shè)計我對整個程序設(shè)計的具體流程以及其中的原理有了更加深刻的理解。由于本
40、次課程設(shè)計是以小組的形式完成的,我深刻體會到了團(tuán)隊 的重要性,當(dāng)我遇到困難時總是和組內(nèi)成員一起討論解決方案,多數(shù)情況下問題會得到解決,即使有時問題無法當(dāng)場解決,但是通過大家的討 論也會對問題有更深一步地理解。在此,我要感謝我的組員薛堯、李玉 菱兩位同學(xué),感謝他們和我一起共同面對冋題,共同解決冋題。接下來我希望對課程提一點小小的建議,我希望在以后的課程中能 夠增加實踐環(huán)節(jié),老師在課堂上可以布置一定的任務(wù)讓同學(xué)們自己動手 操作,由于本身課程的學(xué)時比較少,只有通過這樣的方式才能夠推動同 學(xué)更加主動的去學(xué)習(xí)。另外還要特別感謝一下甘玲老師,老師在課堂上講課清晰、明確, 知識點的講解非常生動、準(zhǔn)確,講課的過程非常幽默、易于接受。在學(xué) 習(xí)的過程中曾經(jīng)遇到過許多問題也向老師請教過,感謝老師耐心的解答。填表日期:2014.12.24聊天室操作手冊本次基于MFC開發(fā)的聊天室主要由服務(wù)器和客戶端構(gòu)成, 不同用 戶可以通過客戶端進(jìn)行對話,服務(wù)器也可以發(fā)送服務(wù)器消息,在客戶 端還可以進(jìn)行文件傳輸,文件傳輸有單線程和多線程的區(qū)別。一、 界面介紹1.服務(wù)器服務(wù)器界面如下圖所示:圖1.1:服務(wù)器2.客戶端客戶端界面如下圖所示:圖1.2:客戶端連接過程1.服務(wù)器連接首先運行服務(wù)器進(jìn)行端口設(shè)置,這里默認(rèn)值
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年高校創(chuàng)新創(chuàng)業(yè)基地入駐服務(wù)合同3篇
- 2025年度個人小產(chǎn)權(quán)房屋買賣合同范本與稅務(wù)籌劃要點4篇
- 二零二五年度4S店汽車銷售區(qū)域代理合同范本3篇
- 二零二五版智慧交通管理系統(tǒng)建設(shè)與運營協(xié)議3篇
- 二零二五年度馬鈴薯深加工廢棄物資源化利用合同4篇
- 二零二五年度創(chuàng)新型企業(yè)房屋租賃合同書
- 2025年度平房出租與城市可持續(xù)發(fā)展合作協(xié)議4篇
- 二零二五年度商業(yè)綜合體停車場投資建設(shè)合作協(xié)議3篇
- 2025年度建筑節(jié)能減排施工承包合同規(guī)范3篇
- 二零二五版路燈照明設(shè)備維修保養(yǎng)服務(wù)合同4篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 冬日暖陽健康守護(hù)
- 水處理藥劑采購項目技術(shù)方案(技術(shù)方案)
- 2024級高一上期期中測試數(shù)學(xué)試題含答案
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓(xùn)
- 三年級除法豎式300道題及答案
- 2024年江蘇省徐州市中考一模數(shù)學(xué)試題(含答案)
- 新一代飛機(jī)維護(hù)技術(shù)
評論
0/150
提交評論