版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Windows网络程序设计课程实验指导书课程名称:Windows网络程序设计实验学时:21适用专业:数字媒体技术课程类别:必修一、实验教学任务与目的:Windows网络程序设计课程是数字媒体技术专业的必修课。实验的目的是为了配合课堂教学,进一步强化使用Winsock的网络程序设计技术。具体内容主要包含TCP/IP的实现技术、网络程序设计基本知识、TCP编程、UDP编程、网络综合程序设计、Winsock常用函数介绍及其应用等内容。二、实验项目内容、基本要求与学时分配序号实验项目名称实验学时实验类别实验类型实验要求实验内容提要1tcp/ip网络程序框架建立3专业基础验证必做设计基于tcp的函数,使
2、用wmsockapi调用2基于udp的网络程序设计3专业基础综合必做设计基于udp的函数,使用wmsockapi调用3利用MFC进行Winsock编程6专业基础综合必做使用MFC框架,构造网络聊天器。4构建网络五子棋游戏9专业基础综合必做使用Csocket类做一个五子棋游戏,能够进行网络游戏注:1、实验类别:基础、专业基础、专业、其它。2、实验类型:演示、验证、综合、设计研究、其它。3、实验要求:必做、选做。三、实验项目的目的及要求实验一Tcp/ip网络程序框架建立(3学时)(一)实验目的和要求:设计基于tcp的函数,逐步了解wmsockapi调用方法2掌握wmsock网络程序的吉本框架(二)
3、实验设备及材料:微机安装MicrosoftVisualC+6.0(三)实验内容1手工输入教科书P188例子8.2.2服务器程序和8.2.3客户机程序,掌握CS模式程序的基本方法。在visualC+6.0平台下,fileiiewprojectswiii32consoleapplication.生成一个projectname为tcp_server的项目。再通过file-new-files生成一个C+的空文件。输入例子822的代码。编译通过后,链接会出现问题。在菜单project里面选择settings-link里面的object/librarymodules添加wsock32.1ibo想想,为什么
4、?在visualstudio2005下面如何操作?自己尝试创建Windows时间服务器程序,侦听1234端口,发送时间的字符形式,实现由RFC-867定义的davtune协议。创建Windows时间客户端程序,向daytime服务器的1234端口,获取时间并显示。在时间网络客户/服务器模式基础上,进行改动,使得客户机和服务器能够进行消息发送。将服务器中的代码从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”,计十);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);客户机中的相关代码从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);思考:这个能够进行简单聊天的客户/服务器模型,在实验运行中,有什么缺点,想想看,能不能使用更好的方法?实验二基于Udp的网络程序设计(3学时)(一)实验目的和要求:设计基于udp的函数,逐步了解winsockapi调用方法2掌握winsock网络程序的吉本框架(二)实验设备及材料:微机安装MicrosoftVisual
8、C+6.0(三)实验内容1、从端口5050接收客户端发送來的数据,接收成功后显示从客户端收到的数据、客户端的IP地址和端口号。2、参照实验一,使用UDP实现相同的功能。实验三利用MFC进行Winsock编程1(6学时)设计基于MFC的Winsock程序设计方法2掌握利用MFC界面进行网络聊天器的设计。(注意参考Examplel.dsw)(二)实验设备及材料:微机安装MicrosoftVisualC+6.0(三)实验内容考虑到大家以前没有学用过MFC程序设计,相对经验不足,因此特意增加MFC的Winsock程序设计方法,也是实验三(2)的前序基础。1、了解已有的网络聊天器源代码,了解整个对话框,
9、客户机和服务器的设计方法。我们使用VC十十提供的可视化集成编程环境來创建对话框界面。创建对话框界面的主要步骤介绍如下。创建一个工程使用VC卄的应用程序生成向导(MFCAppWizaidexe)创建一个基于对话框的匸程,该工程的名称为ChatRooni_mvclasso(注意和范例匚程Example1.dsw的比较)设计程序对话框,如下图所示。Ker区IFitsPrejectsWorksfacesOtherDocarnentsKTLCOMAfipWUatd33Cki处erReurceTyeW1?ardJjCvstomAppWizardtJ)Dou)tM3cProjeaDcvStudioAddin
10、WizardgxtcfidedStoredProcWizardZP1ExieeUnWizardgMatelileMFCActiveX“noWzef窗”FC如号竺理飙DditCidteWizardf|UlittyPreject为WU32g血JW132ConsoleApplication勺WU32Dynnk4.lnkLiWaryiJWi32SMclAraryProjectname:|CbatRoon_myda7BLoc*loo:eWINOOWSMI4fl.MFC)epnde直到Fuush为止4Win37一直默认选择MXt,RoHornu:2按照聊天器的设想,编辑如下的对话框界面,相关的界面,及控件
11、名字如下如下:鼠标右键点击对话框编辑界面,选择ClassWizard出现如下的对话框,为每个控件添加成员变量:ChatRooa.ayclassEditEditControlIDs:建立服貓确定TypeMemberDC_CONNECTbbll创MSIMwCStringm_slnputTextUINTrnZuPortCIPAddrescCtrlmServeripCStringmsShowText3使用File-New生成四个文件,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.链接通不过,看來是连接库函数找不到。在Pioject-settings里面的link添加wsock32.1ib,发现编译通过想想看,为什么
13、?添加服务器函数和客户机函数。Seivei.cpp关键代码(省略)Client.cpp关键代码(省略)在对话框初始化函数添加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);在消息映射处理添加两个消息映射:B
14、EGIN_MESSAGE_MAP(CChatRoom_myclassDlg,CDialog)oooON_MESSAGE(SER_MESSAGE,OnSeiveiMessage)ON_MESSAGE(CLI_MESSAGE,OnClientMessage)oooo/AFX_MSG_MAPEND_MESSAGE_MAP()在对话框初始化函数里添加网络初始化函数: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;这个true,用來区别这是服务器函数m_bClient=FALSE;/这个Z】e,用来区别这是客户机函数参考在ChatRoom_myclassDlg.cpp里面的五个空函数添加,相应网络处理函数。(注意参考Examplel.dsw)afx_msgvoidOnCoimectQ;afx_msg
16、voidOnSetseiveiQ;afx_msgvoidOnUpdatelnputtextO;afx_msgLRESULTOnSeiverMessage(WPARAMwPaiam,LPARAMlParam);afx_msgLRESULTOnClientMessage(WPARAMwParam,LPARAMlParam);实验三利用MFC进行Winsock编程2(第二部分)1.设计基于MFC的Winsock程序设计方法2掌握利用MFC界面进行网络聊天器的设计,在己有的代码基础上,增加设置姓名的对话框,并且在消息中增加聊天者的姓名。(二)实验设备及材料:微机安装MicrosoftVisualC+6
17、.0(三)实验内容1、了解己有的网络聊天器源代码,了解整个对话框,客户机和服务器的设计方法。2、从刚才的程序中,我们发现,该程序许多客户聊天的时候,不知道客户姓名。因此我们希望做成如下的形式因此我们在原始的聊天器的基础上添加一个设置谈天客户姓名的按钮。urces*EditServzIP7hfiInd建立眼务黑lOXEI.OIALOGZdit3、打开项目,在左边的workspace中的Dialog资源,点击右键,选择hisertdialog选项。如下图由st由口Ue潯SaveExamplel.rci“Insert.-日Exanplelresources1G5ClassVi.Resour-.DFi
18、leView这是右边窗口出现将该对话框改成:在文本框edit中,点击右键选择属性,将IDC_EDIT1改成IDC_NAME,将OK按钮移动,其属性为IDOK,Cancel按钮删除。点击整个对话框,选择ClassWizard.o该选项用來对该对话框,创建类和对象,并生成文件。口一国冒顾醱怪BaIE國一IX盛:4回巴-Be!_=:toContent|畀AlignLeftEdgestrAlignTopEdgesytntascc一F一InsertActivekControl.CheckMnefnonicsCLassWizardEvents.输入设置名字对话框类的名字,it/laiuy类名为CChang
19、eNameDlg:(:CIXllXrrl?li-EEMessageMtClassinformation1Project:OKClass.txamplclName:|CChangeNameDlg1c1CancelVariable.EVAExampIFilename:ChangeNameDlg.cpp1ControlIDs:Change.JteVariableIDOKCnlumnm旦皿class:CDialog二|BindAllDialogID:|IDD_SETNAME二AutomationANone点击OK,进入成员变量设置,将IDC_NAME编辑框总对应输入的字符串变量命名为m_sNameo点
20、击OK,可以看到两个新的文件生成了,ChangeNameDlg.cpp和ChangeNameDlg.li。为了把IDD_SETNAME对话框中的名字映射到聊天主界面,在classCExamplelDlg.h类中增加成员变量CStrmgm_Name;函数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:在如下函数中增加这句代码iii=m_Name+u:+in;/qgpaddvoidCExample1Dig:OiiliiputText()if(!m_bLut)AfxMessageBox(uThesessionhasnotbeensetcorrectly11);letuin;CStnngm;GetDlgItem(IDC_INPUTTEXT)-GetWmdowText(iii);/输入框中只有ill车键被按下,所以不发送回车键字
24、符if(in.GetLengthQSetWindowText(HH);if(iii.GetLengthO2)in=m_Name+H:n+iii;/qgpaddm_sShowText+=iii;4、整个聊天器功能完成。实验四构建网络五子棋游戏(9学时)实验目的和要求:掌握利用MFC中的CSock类进行网络程序设计,掌握网络游戏五子棋的开发原理及过程实验设备及材料:微机安装MicrosoftVisualC+6.0实验内容利用MFC构建五子棋界面构建聊天室构建五子棋服务器程序。4构建五子棋客户机程序。代码主框架:利用wm32AppWizaid建立一个单文档工程,工程名为FiveChess,主要包括如下文件:/Maunfim.li/MamiFrni.cpp主程序框架/FiveChessView.li/FiveChessView.cpp文档部分网络控制部分包括如下文件:/SeiverSocket.h/SeiverSocket.cpp服务器侦听socket,继承自CSocket,负责响应客户端消息。/Clientsocke匸h/Clientsocket.cpp用來会话的socket,继承自CSocket,负责响应Receive的消息,客户和服务端都用该socket收发消息。/CMessg.li/CMessg.cpp发送和接受数据的结构定义,五子棋规则部分在此。/Match.li/M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 14629.3-2008滩二毛皮、滩羔皮》专题研究报告
- 《GBT 15248-2008金属材料轴向等幅低循环疲劳试验方法》专题研究报告
- 道路安全业务培训课件
- 2025-2026年湘教版四年级语文上册期末试题解析+答案
- 道路交通安全学课件
- 2025-2026年苏教版初三化学上册期末考试题目及答案
- 2026年广东省肇庆市高职单招语文试题及答案
- 迪拜阿迪达斯介绍
- 新高一化学暑假衔接(人教版):第08讲 氯气的实验室制法及氯离子的检验【学生版】
- 事业单位会计政府会计自制度笔试题
- 2025年宁夏回族自治区吴忠市市辖区红寺堡开发区太阳山镇国民经济和社会发展第十五个五年规划
- 钢结构厂房水电安装施工组织方案
- 2025云南昆明元朔建设发展有限公司第一批收费员招聘20人考试参考试题及答案解析
- 中考英语初一至初三全程知识点总结及练习
- 亚马逊运营年度述职报告
- 教育教学创新大赛课件
- 储能材料与器件课件
- 船厂装配工基础知识培训课件
- 2025年GMAT逻辑推理解析试题
- 2025-2030电子特气行业纯度标准升级对晶圆制造良率影响深度分析报告
- 除夕年夜饭作文600字9篇范文
评论
0/150
提交评论