软件设计实验报告―B13011413陈超_第1页
软件设计实验报告―B13011413陈超_第2页
软件设计实验报告―B13011413陈超_第3页
软件设计实验报告―B13011413陈超_第4页
软件设计实验报告―B13011413陈超_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2015/2016 学年 第 2 学期软件设计实验报告模块名称 VC+ 专业 广播电视工程 学生班级 B 学生学号 B 学生姓名 陈超 指导教师 余雪勇 设计题目1. 熟悉VC+6.0的使用环境2. 获取计算机的名称和IP地址3. 基本C/S模式的通信实验4. 典型网络应用设计5. 综合网络应用设计任务要求1熟悉VC+6.0的使用环境:掌握最基本的基于控制台、对话框、单文档及多文档界面的项目创建方法;掌握项目中的文件构成及作用,学会在程序文件中增加功能代码的方法;掌握程序的生成和调试方法。2.获取计算机的名称和IP地址实验:掌握在程序中获取网络参数的方法:获取计算机的名称和IP地址;获取计算机

2、的子网掩码;获取计算机的DNS设置;获取计算机的网卡地址; 3.基本C/S模式的通信实验编写程序实现下述功能:一个UDPClient/Server模式的通信程序;一个TCP Client/Server模式的通信程序基本要求:能输入计算机的IP地址和端口号,能输入、发送文本信息和显示接受的文本信息。4.典型网络应用程序设计4.1聊天室设计:完成一个文本聊天室程序的设计。4.2简单的浏览器的实现:设计一个简单的浏览器5.综合网络应用设计:房产报修网络化管理实验设备及软件硬件:PC机一台;软件:VC+6.0;其他通用软件工具同组人员学号及姓名无参考文献1. 朱桂英、张元亮 Visual C+网络编程

3、开发与实战 清华大学出版社2. 姚领田等 MFC窗口程序设计 中国水利水电出版社3. 汪晓平、钟军 Visual C+网络通信协议分析与应用实现 人民邮电出版社4. 曹衍龙Visual C+网络通信编程实用案例精选(第二版)人民邮电出版社5. 雷斌、杨建华、黄超、何斌Visual C+ 6.0网络编程技术人民邮电出版社6. 美David J.Kruglinski译:希望图书创作室MICROSOFT VISUAL C+ 6.0技术内幕 北京希望电子出版社一、获取计算机IP地址等网络参数1、 实验目的程序能够自动获取计算机的名称、IP地址、子网掩码、DNS设置、网卡地址。2、 实验内容及过程1.

4、启动Visual C+6.0,在此IDE环境中单击File/New菜单项,打开New对话框,然后单击Projects选项卡,选择“MFC AppWizardexe”一项。在对话框右上角的ProjectsName中填新工程的名字,然后选择适当的目录位置放置此新工程;新建一个MFC Appwizard(exe)工程,命名为B,选择Dialog based框架,一定要包含Windows Sockets。2. 在工作区中选择“ResourceView”选项卡,选择Dialog,双击菜单控件的名字(IDD_B_DIALOG),右边出现程序视图的原始界面,在Dialog里创建应用程序框架,删除对话框中的静

5、态文本框,然后添加控件,选择静态文本框,用来显示计算机名、IP地址等文字,然后对应添加编辑框,修改其属性,将其ID分别修改为IDC_EDIT1IDC_EDIT7,然后进入ClassWizard,建立类向导,选择Member Variables选项卡,为其添加成员变量m_tName,m_type,m_cardname,m_sDsMask,m_sDns,m_pMacAddr, m_sIPAddress;如下图1.1。 图1.1 添加成员变量3.添加按钮用于查询,修改其ID为IDC_BUTTON1,进 MFC classWizard,选择Member Maps选项卡,再在Object Ids列表框中

6、选择IDC_BUTTON1,选择Messages列表框中的BN_CLICKED,点击“Add Function”按钮,增加一个函数,使用系统默认名“IDC_BUTTON1”,单击“OK”;如下图1.2。4.编写程序代码:OnButton1()中调用StartUp()函数来添加WINSOCK类库,调用函数GetLocalHostName获取主机名,函数GetIPAddress获取IP地址,函数GetInfo获取网卡信息,函数ParseData获取适配器信息。点击查询按钮,所获信息均显示在编辑框内。5.在工程-设置-连接-对象/库模块中加入对IPHLPAPI.LIB库文件的支持。 图1.2 添加成

7、员函数3、 实验结果1.点击查询按钮,获取本机网络参数显示如下图1.3图1.3 获取计算机的网络配置信息4、实验体会本实验是在对前一阶段熟悉VC6.0使用环境及对MFC的全面理解的基础上完成的,开始时由于不理解MFC编程,以为只需要编写代码,所以出了很多错误,比如在新建工程时没有选取Windows Sockets导致程序无法编译,还有变量定义的类型一开始不熟悉总是忽略而选默认值,还有必须链接到IPHLPAPI.LIB库文件不然会报错等等细节,这些基本注意点应牢牢掌握,才能更熟练地完成接下来的任务。 二、基于UDP模式的通信程序1、实验目的通过Sockets编程,设计一个UDP的C/S通信程序,

8、实现点对点的通信,能编辑文本消息以及实现该消息的传送。2、实现方法:UDP的Server和Client程序相同,采用相同的架构,Server服务端对本地终结点进行监听,客户端同样对相应终结点监听,直接向该终结点发送数据,便可进行通信,程序架构分为两部分,一部分是对本地终结点的绑定和监听,另一部分是进行数据的通信。通信过程中,第一步初始化Winsock;第二步建立一个数据报类型的UDP套接字;第三步使用sendto函数进行通信;第四步关闭socket;程序流程图如下图2.1: 图2.1 UDP通信程序流程图3、实验过程:1按之前详述步骤建立一个新工程,取名为BUDP。2在resourceview

9、里的Dialog中创建应用程序框架,修改相应编辑或按钮框的Object IDs,在MFC ClassWizard中建立类向导:添加变量m_disp,m_sip,m_sport,m_dip,m_dport,添加成员函数OnButton1,OnRadio1,OnRadio2。3.在工作区中选择FileView选项卡,手动添加chatsock.cpp和mysocket.cpp和相对应的头文件,并在程序代码中引用这两个头文件。4.编写源程序代码4、实验结果运行时需要打开两个运行窗口并分别设置目的端口和源端口的端口号分别对应,选中UDP,并在编辑框里输入文本信息,点击“发送”按钮,文本信息在另一个窗口中

10、显示时,实现通信。1.UDP服务端建立如下图2.2图2.2 UDP服务端建立2.UDP客户端连接如下图2.3图2.3 UDP客户端连接3. UDP客户端与服务端连接成功并进行聊天如下图2.4 图2.4 UDP客户端与服务端连接成功并进行聊天5、实验体会基于C/S模式的UDP模式的通信程序设计,是第一次尝试基于socket套接字进行数据传输,因为对于socket流式传输原理的理解不够深刻,在尝试编写过程中出现了大量error后,参考了许多相关mysocket类的实现与应用代码,也逐步认识到套接字的使用方法;另外,在搭建Dialog框架的使用上,相对于上一个实验,诸如可以修改编辑框文字的滚动格式等

11、有了更多的了解。此次设计的UDP通信一个很大的局限在于未设置关闭UDP连接按钮及相应功能,需要进一步深刻理解夯实原理,探索实现。三、基于TCP模式的通信程序1、实验目的使用Sockets编程,实现基于TCP的C/S模拟通信。2、实现方法:对Socket服务端采用用多线程框架,对每一个客户端的连接分配一个子线程,程序采用默认端口,一旦运行便对端口开始监听,程序功能分为三部分,包括SocketServer的配置以及监听,数据的接收和数据的发送。程序界面有三个按钮分别为发送、清空、关闭,消息函数分别为btnClientSend_Click、btnClear_Click、btnExit_Click。对

12、Socket客户端,通过设置菜单设置连接的服务器IP,端口采用默认端口,简单实现对服务器的连接和数据收发。程序流程图如下图3.1:图3.1 TCP通信程序流程图4、 实验过程1.建立两个新工程,分别取名为BTCPC和BTCPS。2.在工作区中选择“ResourceView”选项卡,选择Dialog,双击菜单控件的名字(IDD_BTCPS_DIALOG和IDD_BTCPC_DIALOG),右边出现程序视图的原始界面,使用控件添加Static,Button,Edict,Radio等控件,对每一个控件右键可编辑属性修改ID和标题。3.在工具栏点击查看-建立类向导,进入Massage Map选项卡,C

13、lass Name选择BTCPSDlg(客户端选择BTCPCDlg),为控件添加事件处理函数。进入Member Varibles选项卡,为控件添加变量名。4.在工作区中选择FileView选项卡,在BTCPCFiles中手动添加chatsock.cpp,chatsock.h,mysocket.cpp和mysocket.h,在BTCPSFiles中添加clisock.cpp,lstsocket.cpp,mysocket.cpp和对应的头文件,并在程序代码中引用这些文件。5.编写相应函数代码。4、实验结果运行时需要打开两个运行窗口并分别设置目的端口和源端口的端口号,先点击TCP建立服务器,再点击T

14、CPclient,并在编辑框里输入文本信息,点击“发送”按钮,文本信息在另一个窗口中显示时,实现通信。1.TCP服务器建立如下图3.2 图3.2 TCP服务器建立2. TCP客户端与服务端连接成功如下图3.3图3.3 TCP客户端与服务端连接成功3. TCP客户端与服务端进行聊天如下图3.4图3.4 TCP客户端与服务端进行聊天5、实验体会经过TCP和UDP模式的通信程序设计,对TCP与UDP的通信原理与区别有了较为深刻的认识。相对于UDP通信,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,其必须保证传输的数据无误,因此在UDP基本架构上要用一个校验和函数检验数据是否有错误,在接

15、收和发送时都要计算校验和,UDP没有可靠、有次序、不重复的保证。查找了一些参考资料及相关代码发现,一般情况下TCP Socket 的数据发送和接收是调用send() 及recv() 这两个函数来达成,而 UDP Socket则是用sendto() 及recvfrom() 这两个函数,这两个函数调用成功发挥发送或接收的资料的长度,否则返回SOCKET_ERROR,所以TCP的两端每次收发数据前必须建立连接,协议本身也保证可靠有序,而UDP任何一方建立一个socket后就可以用这两个函数收发数据,但并不关心对方是否存在并接受。对课本理论内容是一次极大地实践与学习。四、基于Socket的文本聊天室设

16、计1、实验目的利用WinSocket实现一个网络聊天室。需要一个聊天服务器,它可以和很多客户端进行通信,从而把来自不同的客户的聊天信息转交到所有其他的客户端。这样就形成了一个采用Client/Server结构的并可以多人同时在线的聊天室。2、实现方法在Internet上的聊天室程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。1)服务器端工作流程:服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目

17、),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。2)客户端工作流程:客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。流程图如下图4.1图4.1 聊天室设计流程图3、实验过程:1.新建项目,命名为BChatRoom。2. 在工作区中选择“ResourceView”选项卡,选择Dialog,双击菜单控件的名字(IDD_BChatRoom _DIALOG),右边出现程序视图的原

18、始界面,使用控件添加Static,Button,Edit,IpAddress等控件,对每一个控件右键可编辑属性修改ID和标题。3. 在工具栏点击查看-建立类向导,进入Massage Map选项卡,Class Name选择BChatRoomDlg,为控件添加事件处理函数。进入Member Varibles选项卡,为控件添加变量名。4. 在工作区中选择FileView选项卡,在BChatRoomFiles中手动添加ClientSocket.cpp,ServerSocket.cpp,CMessg.cpp和对应的头文件,并在程序代码中引用这些文件。5.编写相应函数代码。4、实验结果1聊天室服务端建立如

19、下图4.2 图4.2 聊天室服务端建立2.聊天室客户端连接如下图4.3 图4.3 聊天室客户端连接3. 聊天室客户端与服务端连接成功并开始聊天如下图4.4图4.4 聊天室客户端与服务端连接成功并开始聊天4.多站点连接进入聊天室并显示相关提示信息如下图4.5图4.5 一个游客进入聊天室5、实验体会由于程序较为复杂,在编写过程中出现了很多问题,比如对于图形界面的编程部分还未能熟练掌握和应用,因此在开始试验之前应该做好充分的准备,熟练构想相关函数的功能,理清思路和画好流程图也是很有必要的,尤其是此类较为综合型的设计,今后一定要吸取这些宝贵的经验教训,以便更深入的学习。另外,从运行结果来看,总体实现了

20、多人在线聊天功能,还未能进行用户之间的一对一的聊天,有待进一步学习并完善。通过本课题的设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,传输控制协议(TCP/IP)进行数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展上课期间的学习内容,更好的适应将来社会的需求。五、简单的浏览器的实现1、实验目的通过MFC提供的CHTMLView类,开发一个简单的浏览器,实现网页浏览功能。2、实现方法 程序流程图如下5.1图5.1 浏览器程序流程图3、实验过程1.新建一个工程,命名为BBrowse,进入MFC AppWizard设置第一步。选择应用程序型为

21、单文档。并选择“中文中国APPWZCHS.DLL”默认选项,单击下一步按钮,在MFC AppWizard设置第2步和第3步中使用其默认值,进入第4步。由于在WEB浏览器时需要增加一个WEB地址的对话框,因此在这里选择Internet Explorer ReBars 作为工具栏的外观,这样应用程序将会自动的生成一个对话框;在第5步中不需要做任何修改,在最后一步中,需要修改图类的基类,使之变成ChtmlView类,由于选择了ChtmlView类作为该应用程序视图类的基类,所以改程序已经有了一定的WEB浏览功能。然后再对菜单项和工具栏进行修改,使程序能够实现所需要的功能。2.在工作区中选择“Reso

22、urceView”选项卡,选择Dialog,双击菜单控件的名字(IDR_MAINFRAME),右边出现程序视图的原始界面,增加Edit控件作为地址栏,并右键属性修改ID和标题。选择Menu菜单下的IDR_MAINFRAME,点击“查看”下拉菜单中的空格,增加“前进”、“后退”按钮,并赋ID名。3. 在工具栏点击查看-建立类向导,进入Massage Map选项卡,Class Name选择BBrowseDlg,为控件添加事件处理函数。进入Member Varibles选项卡,为控件添加变量名。4.编写相应函数代码。4、实验结果 输入 按下回车键,进入百度首页,如图5.2所

23、示:图5.2 浏览器进入百度页面5、实验体会浏览器项目的设计较之前各项实验有很大的不同,不仅表现在基于单文档形式需要手动绘图ToolBar,另外在项目的创建上基类必须选择HtmlView,否则无法编译,添加成员变量时应注意控件的属性等。实验过程中最终调试运行虽然没有error,但发现地址栏前面的箭头符号显示成ToolBar中的第一个IDR_MAINFRAME,最终经过组建调试Run To cursor一步步排查,发现在代码段的一个调用语句中确实出现错误,应将默认的第一个ToolBar改成自己绘制的。在浏览器的设计过程中,由于能力及需求分析上的局限,设计只实现了前进,后退功能,未有能力实现新建页

24、面等功能。应在充分掌握的基础上进行修改和完善,以便将理论和实践更好地融会贯通。六、房产报修系统网络化管理1、实验目的基于socket套接字编写MFC工程以实现房产报修系统网络化管理。2、实验内容及过程1.新建两个工程,还是基于对话框模式和windows套接字,分别命名为Bbaoxius和Bbaoxiuc。2. 在工作区中选择“ResourceView”选项卡,选择Dialog,双击菜单控件的名字IDD_Bbaoxius_DIALOG(或IDD_Bbaoxiuc _DIALOG),右边出现程序视图的原始界面,使用控件添加Static,Button,Edit等控件,对每一个控件右键可编辑属性修改I

25、D和标题。3. 在工具栏点击查看-建立类向导,进入Massage Map选项卡,Class Name选择BbaoxiusDlg,为控件添加事件处理函数。进入Member Varibles选项卡,为控件添加变量名。4. 在工作区中选择FileView选项卡,在BbaoxiusFiles中手动添加ListenThread.cpp和对应的头文件,并在程序代码中引用这些文件。5.编写相应函数代码。3、实验结果1.服务器建立连接如下图6.1图6.1 房产保修系统服务器建立2.客户端连接填写相应文字进行报修申请如下图6.2 图6.2 客户端连接并填写申请3.服务器端收到报修信息并反馈客户端报修成功如下图6

26、.3图6.3 客户端报修成功、服务器收到报修申请信息4、实验小结这个实验比较复杂,是在熟悉基于TCP/IP的socket设计的基础上进行的综合应用设计,题目宽泛,难度较大,经过需求分析与程序流程的构建初步确立房产报修系统的功能与实现方法。经过努力尝试,客户端连接服务器进行报修申请,服务器提供连接并收到相关消息汇总,初步实现了总体功能,由于没有相关知识的支持,没有进行数据库这一块的设计,所以信息的通信还仅仅停留在对话框中,与实际应用还存在一定差距,此外,在客户端申请的三条报修信息出于人性化角度服务器端应能将三条信息空隔开显示,避免疑义,但在修改代码过程中一直出现报错,没有实现此项功能,今后仍需继

27、续学习。七、课程设计小结此次本软件设计不仅加深了对理论课的理解,掌握理论应用于实际的方法,也从很大程度上了解基于TCP/IP协议栈的Socket程序设计方法,是动手能力的一次极大提高。本次软件设计总体内容是在熟悉VC+6.0的运行环境并掌握socket流式传输原理的基础上应用Socket程序设计方法,设计完成典型的网络应用及设计实现综合的网络应用系统。回想整整两周的或辛苦获激动的设计过程,有以下几点认识和体会:1.在设计之前应做好充分的准备。为了更深入地了解本次实验的要求和需要掌握的知识点,老师精心为我们准备了丰富的学习资源和可以下载资料的网站。在设计之初,看到题目觉得很陌生,虽然之前的程序设计有熟练使用过VC6.0及C+语言,但是此次设计的要求更高、范围更广、含义更深,MFC项目的创建以前更是无所涉及,无从下手,但想到老师提供了很多学习的资源,于是下载了PDF仔细阅读,发现其对于本次软件设计实验很有帮助,能够很详细地一步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论