《Windows網(wǎng)絡(luò)程序設(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書_第1頁
《Windows網(wǎng)絡(luò)程序設(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書_第2頁
《Windows網(wǎng)絡(luò)程序設(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書_第3頁
《Windows網(wǎng)絡(luò)程序設(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書_第4頁
《Windows網(wǎng)絡(luò)程序設(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Windows網(wǎng)絡(luò)程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書課程名稱:Windows網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)驗(yàn)學(xué)時(shí):21適用專業(yè):數(shù)字媒體技術(shù)課程類別:必修一、實(shí)驗(yàn)教學(xué)任務(wù)與目的:Windows網(wǎng)絡(luò)程序設(shè)計(jì)課程是數(shù)字媒體技術(shù)專業(yè)的必修課。實(shí)驗(yàn)的目的是為了配合課堂教學(xué),進(jìn)一步強(qiáng)化使用Winsock的網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù)。具體內(nèi)容主要包含TCP/IP的實(shí)現(xiàn)技術(shù)、網(wǎng)絡(luò)程序設(shè)計(jì)基本知識(shí)、TCP編程、UDP編程、網(wǎng)絡(luò)綜合程序設(shè)計(jì)、Winsock常用函數(shù)介紹及其應(yīng)用等內(nèi)容。二、實(shí)驗(yàn)項(xiàng)目內(nèi)容、基本要求與學(xué)時(shí)分配序號(hào)實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)學(xué)時(shí)實(shí)驗(yàn)類別實(shí)驗(yàn)類型實(shí)驗(yàn)要求實(shí)驗(yàn)內(nèi)容提要1tcp/ip網(wǎng)絡(luò)程序框架建立3專業(yè)基礎(chǔ)驗(yàn)證必做設(shè)計(jì)基于tcp的函數(shù),使

2、用wmsockapi調(diào)用2基于udp的網(wǎng)絡(luò)程序設(shè)計(jì)3專業(yè)基礎(chǔ)綜合必做設(shè)計(jì)基于udp的函數(shù),使用wmsockapi調(diào)用3利用MFC進(jìn)行Winsock編程6專業(yè)基礎(chǔ)綜合必做使用MFC框架,構(gòu)造網(wǎng)絡(luò)聊天器。4構(gòu)建網(wǎng)絡(luò)五子棋游戲9專業(yè)基礎(chǔ)綜合必做使用Csocket類做一個(gè)五子棋游戲,能夠進(jìn)行網(wǎng)絡(luò)游戲注:1、實(shí)驗(yàn)類別:基礎(chǔ)、專業(yè)基礎(chǔ)、專業(yè)、其它。2、實(shí)驗(yàn)類型:演示、驗(yàn)證、綜合、設(shè)計(jì)研究、其它。3、實(shí)驗(yàn)要求:必做、選做。三、實(shí)驗(yàn)項(xiàng)目的目的及要求實(shí)驗(yàn)一Tcp/ip網(wǎng)絡(luò)程序框架建立(3學(xué)時(shí))(一)實(shí)驗(yàn)?zāi)康暮鸵螅涸O(shè)計(jì)基于tcp的函數(shù),逐步了解wmsockapi調(diào)用方法2掌握wmsock網(wǎng)絡(luò)程序的吉本框架(二)

3、實(shí)驗(yàn)設(shè)備及材料:微機(jī)安裝MicrosoftVisualC+6.0(三)實(shí)驗(yàn)內(nèi)容1手工輸入教科書P188例子8.2.2服務(wù)器程序和8.2.3客戶機(jī)程序,掌握CS模式程序的基本方法。在visualC+6.0平臺(tái)下,fileiiewprojectswiii32consoleapplication.生成一個(gè)projectname為tcp_server的項(xiàng)目。再通過file-new-files生成一個(gè)C+的空文件。輸入例子822的代碼。編譯通過后,鏈接會(huì)出現(xiàn)問題。在菜單project里面選擇settings-link里面的object/librarymodules添加wsock32.1ibo想想,為什么

4、?在visualstudio2005下面如何操作?自己嘗試創(chuàng)建Windows時(shí)間服務(wù)器程序,偵聽1234端口,發(fā)送時(shí)間的字符形式,實(shí)現(xiàn)由RFC-867定義的davtune協(xié)議。創(chuàng)建Windows時(shí)間客戶端程序,向daytime服務(wù)器的1234端口,獲取時(shí)間并顯示。在時(shí)間網(wǎng)絡(luò)客戶/服務(wù)器模式基礎(chǔ)上,進(jìn)行改動(dòng),使得客戶機(jī)和服務(wù)器能夠進(jìn)行消息發(fā)送。將服務(wù)器中的代碼從while(l)comiectioiiFd=accept(seivefFd,(stnictsockaddr*)NULL,NULL);if(coimectioiiFd=0)cunentTmie=tnne(NULL);spnntf(timeb

5、uffei;ctime(&ci】TieiHTiine);pnntf(HB=0)cuiTentTime=tnne(NULL);spnntf(timebuffei,n%sH,ctune(&cunentTime);pimtf(HM%d次通話n”,計(jì)十);send(coniiectionFd,tunebuffei;strlen(timebuffei),O);charmsg100;scanf(,l%slmsg);spnntf(timebuffei,r%snmsg);send(coimectionFd9timebuffei,stflen(tmiebuffei),O);if(in=recv(coimecti

6、oiiFd,timebuffei;MAX_BUFFER,0)0)timebuffeiin=0;pnntf(nii%s,timebuffei);closesocket(coimectioiiFd);客戶機(jī)中的相關(guān)代碼從while(m=recv(comiectioiiFd,timebuffei;MAX_BUFFER.0)0)tiniebuffeim=0;piintf(n%s,timebuffei);改為如下代碼,while(l)if(in=iecv(connectioiiFd,timebuffer,MAXJBUFFER,0)0)timebuffeiin=0;pnntf(nii%s,timebuff

7、ei);charmsg100;scanf(,l%slmsg);spnntf(timebuffei;H%siin,msg);send(coimectioiiFd,tunebuffei;strlen(timebuffei),0);closesocket(coimectioiiFd);思考:這個(gè)能夠進(jìn)行簡單聊天的客戶/服務(wù)器模型,在實(shí)驗(yàn)運(yùn)行中,有什么缺點(diǎn),想想看,能不能使用更好的方法?實(shí)驗(yàn)二基于Udp的網(wǎng)絡(luò)程序設(shè)計(jì)(3學(xué)時(shí))(一)實(shí)驗(yàn)?zāi)康暮鸵?設(shè)計(jì)基于udp的函數(shù),逐步了解winsockapi調(diào)用方法2掌握winsock網(wǎng)絡(luò)程序的吉本框架(二)實(shí)驗(yàn)設(shè)備及材料:微機(jī)安裝MicrosoftVisual

8、C+6.0(三)實(shí)驗(yàn)內(nèi)容1、從端口5050接收客戶端發(fā)送來的數(shù)據(jù),接收成功后顯示從客戶端收到的數(shù)據(jù)、客戶端的IP地址和端口號(hào)。2、參照實(shí)驗(yàn)一,使用UDP實(shí)現(xiàn)相同的功能。實(shí)驗(yàn)三利用MFC進(jìn)行Winsock編程1(6學(xué)時(shí))設(shè)計(jì)基于MFC的Winsock程序設(shè)計(jì)方法2掌握利用MFC界面進(jìn)行網(wǎng)絡(luò)聊天器的設(shè)計(jì)。(注意參考Examplel.dsw)(二)實(shí)驗(yàn)設(shè)備及材料:微機(jī)安裝MicrosoftVisualC+6.0(三)實(shí)驗(yàn)內(nèi)容考慮到大家以前沒有學(xué)用過MFC程序設(shè)計(jì),相對(duì)經(jīng)驗(yàn)不足,因此特意增加MFC的Winsock程序設(shè)計(jì)方法,也是實(shí)驗(yàn)三(2)的前序基礎(chǔ)。1、了解已有的網(wǎng)絡(luò)聊天器源代碼,了解整個(gè)對(duì)話框,

9、客戶機(jī)和服務(wù)器的設(shè)計(jì)方法。我們使用VC十十提供的可視化集成編程環(huán)境來創(chuàng)建對(duì)話框界面。創(chuàng)建對(duì)話框界面的主要步驟介紹如下。創(chuàng)建一個(gè)工程使用VC卄的應(yīng)用程序生成向?qū)В∕FCAppWizaidexe)創(chuàng)建一個(gè)基于對(duì)話框的匸程,該工程的名稱為ChatRooni_mvclasso(注意和范例匚程Example1.dsw的比較)設(shè)計(jì)程序?qū)υ捒?,如下圖所示。Ker區(qū)IFitsPrejectsWorksfacesOtherDocarnentsKTLCOMAfipWUatd33Cki處erReurceTyeW1?ardJjCvstomAppWizardtJ)Dou)tM3cProjeaDcvStudioAddin

10、WizardgxtcfidedStoredProcWizardZP1ExieeUnWizardgMatelileMFCActiveX“noWzef窗”FC如號(hào)竺理飆DditCidteWizardf|UlittyPreject為WU32g血JW132ConsoleApplication勺WU32Dynnk4.lnkLiWaryiJWi32SMclAraryProjectname:|CbatRoon_myda7BLoc*loo:eWINOOWSMI4fl.MFC)epnde直到Fuush為止4Win37一直默認(rèn)選擇MXt,RoHornu:2按照聊天器的設(shè)想,編輯如下的對(duì)話框界面,相關(guān)的界面,及控件

11、名字如下如下:鼠標(biāo)右鍵點(diǎn)擊對(duì)話框編輯界面,選擇ClassWizard出現(xiàn)如下的對(duì)話框,為每個(gè)控件添加成員變量:ChatRooa.ayclassEditEditControlIDs:建立服貓確定TypeMemberDC_CONNECTbbll創(chuàng)MSIMwCStringm_slnputTextUINTrnZuPortCIPAddrescCtrlmServeripCStringmsShowText3使用File-New生成四個(gè)文件,Client.h,Server.h,Client.cpp,Server.cpp。添加至Project中。a.開始嘗試編譯下,通不過,在ChatRoom_myclassDl

12、g.h中添加如下代碼:#includeServe】.h”#includeClient.h#include#defiiieSER_MESSAGEWM_USER十100#defineCLI_MESSAGEWM_USER+101typedefCListSOCKET_ARRAY;增加變量:CSeiverm_seiver;CClientm_client;BOOLm_blmt;BOOLm_bClient;SOCKET_ARRAYm_coiuiectioiiList;b.鏈接通不過,看來是連接庫函數(shù)找不到。在Pioject-settings里面的link添加wsock32.1ib,發(fā)現(xiàn)編譯通過想想看,為什么

13、?添加服務(wù)器函數(shù)和客戶機(jī)函數(shù)。Seivei.cpp關(guān)鍵代碼(省略)Client.cpp關(guān)鍵代碼(省略)在對(duì)話框初始化函數(shù)添加CChatRoom_myclassDlg:CChatRoom_mvclassDlg(CWnd*pParentCDialog(CChatRoom_myclassDlg:IDD,pPaient)/AFX_DATA_INIT(CChatRooni_mvclassDlg)m_sLiputText=m_uPort=4000;m_sShowText=_T(nM);mjilcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);在消息映射處理添加兩個(gè)消息映射:B

14、EGIN_MESSAGE_MAP(CChatRoom_myclassDlg,CDialog)oooON_MESSAGE(SER_MESSAGE,OnSeiveiMessage)ON_MESSAGE(CLI_MESSAGE,OnClientMessage)oooo/AFX_MSG_MAPEND_MESSAGE_MAP()在對(duì)話框初始化函數(shù)里添加網(wǎng)絡(luò)初始化函數(shù):BOOLCChatRoom_myclassDlg:OiiInitDialog()ooooWSADATAwsaData;WORDveision=MAKEWORD(2,0);mtret=WSAStaitiip(veision,&wsaData)

15、;if(ret!=0)TRACE(uImtilizeEnoi!iin);初始化失敗AfxMessageBox(Failedmmitialsocket);m_coimectionList.RemoveAll();ASSERT(m_coimectionLis匸GetCoimt()=0);m_bImt=FALSE;這個(gè)true,用來區(qū)別這是服務(wù)器函數(shù)m_bClient=FALSE;/這個(gè)Z】e,用來區(qū)別這是客戶機(jī)函數(shù)參考在ChatRoom_myclassDlg.cpp里面的五個(gè)空函數(shù)添加,相應(yīng)網(wǎng)絡(luò)處理函數(shù)。(注意參考Examplel.dsw)afx_msgvoidOnCoimectQ;afx_msg

16、voidOnSetseiveiQ;afx_msgvoidOnUpdatelnputtextO;afx_msgLRESULTOnSeiverMessage(WPARAMwPaiam,LPARAMlParam);afx_msgLRESULTOnClientMessage(WPARAMwParam,LPARAMlParam);實(shí)驗(yàn)三利用MFC進(jìn)行Winsock編程2(第二部分)1.設(shè)計(jì)基于MFC的Winsock程序設(shè)計(jì)方法2掌握利用MFC界面進(jìn)行網(wǎng)絡(luò)聊天器的設(shè)計(jì),在己有的代碼基礎(chǔ)上,增加設(shè)置姓名的對(duì)話框,并且在消息中增加聊天者的姓名。(二)實(shí)驗(yàn)設(shè)備及材料:微機(jī)安裝MicrosoftVisualC+6

17、.0(三)實(shí)驗(yàn)內(nèi)容1、了解己有的網(wǎng)絡(luò)聊天器源代碼,了解整個(gè)對(duì)話框,客戶機(jī)和服務(wù)器的設(shè)計(jì)方法。2、從剛才的程序中,我們發(fā)現(xiàn),該程序許多客戶聊天的時(shí)候,不知道客戶姓名。因此我們希望做成如下的形式因此我們?cè)谠嫉牧奶炱鞯幕A(chǔ)上添加一個(gè)設(shè)置談天客戶姓名的按鈕。urces*EditServzIP7hfiInd建立眼務(wù)黑lOXEI.OIALOGZdit3、打開項(xiàng)目,在左邊的workspace中的Dialog資源,點(diǎn)擊右鍵,選擇hisertdialog選項(xiàng)。如下圖由st由口Ue潯SaveExamplel.rci“Insert.-日Exanplelresources1G5ClassVi.Resour-.DFi

18、leView這是右邊窗口出現(xiàn)將該對(duì)話框改成:在文本框edit中,點(diǎn)擊右鍵選擇屬性,將IDC_EDIT1改成IDC_NAME,將OK按鈕移動(dòng),其屬性為IDOK,Cancel按鈕刪除。點(diǎn)擊整個(gè)對(duì)話框,選擇ClassWizard.o該選項(xiàng)用來對(duì)該對(duì)話框,創(chuàng)建類和對(duì)象,并生成文件??谝粐邦欋w怪BaIE國一IX盛:4回巴-Be!_=:toContent|畀AlignLeftEdgestrAlignTopEdgesytntascc一F一InsertActivekControl.CheckMnefnonicsCLassWizardEvents.輸入設(shè)置名字對(duì)話框類的名字,it/laiuy類名為CChang

19、eNameDlg:(:CIXllXrrl?li-EEMessageMtClassinformation1Project:OKClass.txamplclName:|CChangeNameDlg1c1CancelVariable.EVAExampIFilename:ChangeNameDlg.cpp1ControlIDs:Change.JteVariableIDOKCnlumnm旦皿class:CDialog二|BindAllDialogID:|IDD_SETNAME二AutomationANone點(diǎn)擊OK,進(jìn)入成員變量設(shè)置,將IDC_NAME編輯框總對(duì)應(yīng)輸入的字符串變量命名為m_sNameo點(diǎn)

20、擊OK,可以看到兩個(gè)新的文件生成了,ChangeNameDlg.cpp和ChangeNameDlg.li。為了把IDD_SETNAME對(duì)話框中的名字映射到聊天主界面,在classCExamplelDlg.h類中增加成員變量CStrmgm_Name;函數(shù)afx_msgvoidOnSetNameQ;/qgpadd在CExample1Dlg.cpp中增加#includechangenamedlg.h/qgpadda.BEGIN_MESSAGE_MAP(CExaniple1Dig,CDialog)/AFX_MSG_MAP(CExample1Dig)ON_WM_SYSCOMMAND()ON_WM_PAI

21、NTQON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_CONNECT,OnCoimect)ON_BN_CLICKED(IDC_SETSERVER,OnSetseivei)ON_BN_CLICKED(IDC_SETNAME,OnSetName)/qgpaddON_EN_UPDATE(IDC_INPUTTEXT,OnInputText)ON_MESSAGE(SER_MESSAGE,OnSeiveiMessage)ON_MESSAGE(CLI_MESSAGE,OnClientMessage)/AFX_MSG_MAPEND_MESSAGE_MAP()CExample1Di

22、g:CExample1Dlg(CWnd*pParent/*=NULL*/):CDialog(CExample1Dig:IDD,pPaient)/AFX_DATA_INIT(CExamplelDlg)m_uPoit=4000;m_sShowText=_T(U);m_shiputText=_T(nn);m_Name=_T(”);/qgpadd/AFX_DATA_INIT/NotethatLoadlcondoesnotrequiieasubsequentDestroylconinWin32mjilcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);voidCExample

23、1Dig:OnSetNameQ/qgpaddCChangeNameDlgNamedig;Namedlg.DoModalQ;m_Name=Namedlg.m_sName;d:在如下函數(shù)中增加這句代碼iii=m_Name+u:+in;/qgpaddvoidCExample1Dig:OiiliiputText()if(!m_bLut)AfxMessageBox(uThesessionhasnotbeensetcorrectly11);letuin;CStnngm;GetDlgItem(IDC_INPUTTEXT)-GetWmdowText(iii);/輸入框中只有ill車鍵被按下,所以不發(fā)送回車鍵字

24、符if(in.GetLengthQSetWindowText(HH);if(iii.GetLengthO2)in=m_Name+H:n+iii;/qgpaddm_sShowText+=iii;4、整個(gè)聊天器功能完成。實(shí)驗(yàn)四構(gòu)建網(wǎng)絡(luò)五子棋游戲(9學(xué)時(shí))實(shí)驗(yàn)?zāi)康暮鸵螅赫莆绽肕FC中的CSock類進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì),掌握網(wǎng)絡(luò)游戲五子棋的開發(fā)原理及過程實(shí)驗(yàn)設(shè)備及材料:微機(jī)安裝MicrosoftVisualC+6.0實(shí)驗(yàn)內(nèi)容利用MFC構(gòu)建五子棋界面構(gòu)建聊天室構(gòu)建五子棋服務(wù)器程序。4構(gòu)建五子棋客戶機(jī)程序。代碼主框架:利用wm32AppWizaid建立一個(gè)單文檔工程,工程名為FiveChess,主要包括如下文件:/Maunfim.li/MamiFrni.cpp主程序框架/FiveChessView.li/FiveChessView.cpp文檔部分網(wǎng)絡(luò)控制部分包括如下文件:/SeiverSocket.h/SeiverSocket.cpp服務(wù)器偵聽socket,繼承自CSocket,負(fù)責(zé)響應(yīng)客戶端消息。/Clientsocke匸h/Clientsocket.cpp用來會(huì)話的socket,繼承自CSocket,負(fù)責(zé)響應(yīng)Receive的消息,客戶和服務(wù)端都用該socket收發(fā)消息。/CMessg.li/CMessg.cpp發(fā)送和接受數(shù)據(jù)的結(jié)構(gòu)定義,五子棋規(guī)則部分在此。/Match.li/M

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論