欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机网络第三次实验(共12页).doc

    • 资源ID:13926294       资源大小:539KB        全文页数:12页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络第三次实验(共12页).doc

    精选优质文档-倾情为你奉上东南大学自动化学院实 验 报 告课程名称: 信息通信网络概论 第3次实验实验名称: 实验三 基于客户/服务器模式的网络通信编程实现 院 (系): 自动化 专 业: 自动化 姓 名: XXX 学 号: 08016XXX 实 验 室: 金智楼 实验组别: 同组人员: 实验时间: 2018年 5月21 日评定成绩: 审阅教师: 目 录一 实验目的和要求1. 进一步了解网络编程的过程;2. 掌握Windows环境下基于WinSock的编程方法和通信实现; 3. 熟悉客户/服务器模式的网络通信编程实现,编写一个聊天工具,即以客户端和服务器端的模式进行互发消息。二 实验原理一个在建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。一个对称协议的例子是Internet中用于终端仿真的TELNET。而非对称协议的例子是Internet中的FTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在“客户进程”和“服务进程”。 一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务对客户的请求作出适当的反应。这一请求/相应的过程可以简单的用图2-1表示。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。图2-1 客户机/服务器模型三 实验方案与实验步骤1、 客户机/服务器工作流程图3.1 客户机/服务器工作流程2、 聊天室的工作流程图3.2 聊天室工作流程首先,服务器要创建一个用于侦听的套接字,为该套接字分配地址之后,调用listen()函数使它处于侦听状态;客户机在创建套接字完毕后,为套接字分配地址,然后调用connect()函数,请求与服务器套接字连接;服务器套接字在收到客户机的连接请示后,调用accept()函数,该函数创建一个用于连接的套接字。应用该套接字和客户机上的连接套接字,用户就可以在服务器和客户机之间进行数据传输了。在结束传输之后,客户机调用closesocket()函数关闭套接字,服务器也调用该函数关闭用于侦听和连接的套接字。3、 套接字事件处理相关函数OnAccept():监听套接字在断口听到连接请求时,应用程序框架调用该函数以告之可以接受或拒绝连接请求,调用Accept来接受请求,建立连接。OnConnect():当客户端套接字连接请求完成后,应用程序框架调用该函数,告之是否成功。OnSend():框架调用该函数通知该套接字现在可以调用Send函数开始传送数据。OnReceive():框架调用该函数通知套接字可以调用Receive函数从数据缓冲区中取数据。OnClose():框架调用该函数告之与其相连的对方套接字已被关闭。4、 系统实现图3.3 系统实现过程实验具体步骤如下: 1) 利用 MFC AppWizard 生成程序框架 在Visual C+的IDE环境下选择菜单File NewProjects MFC AppWizard(exe) Project Name“OK”“NEXT”Windows Sockets“ Finish”按钮,选择“OK” 按钮,应用程序的框架就将自动创建。2) 增加控件对象 在创建了应用程序框架之后,可以布置程序的主对话框,向应用程序的主对话框添 加控件。设计好了对话框之后,选取 View 菜单中的 ClassWizard 菜单项,或直接按 “Ctrl+W ”,打开 MFC ClassWizard,将对话框中的控件和变量相关联。3) 从 CAsyncSocket 类继承 选择Insert菜单中的New Class选取Class type为Generic Class在Base class 的 Derived From 列中输入 CAsyncSocket,在 As 列中接受默认值 public,点击” OK”按钮,就可以把这个新创建的类添加到应用程序中。 向该套接字类中添加一个成员变量,用作指向父对话框窗口的指针,指针变量的类 型为 CTalkDlg*(Cdialog 的派生类),变量名为 m_pDlg,访问权限为私有。最后,添加套接字类事件处理函数,这些函数将用于调用对话框中名称类似的那些函数。4) 建立客户机与服务器之间的连接 为了完成连接,需要添加对套接字事件的处理函数,在对话框类中添加 OnAccept() 事件处理函数和 OnConnect()事件处理函数。 如果现在可以编译和运行应用程序,就可以启动两个副本,把其中一个设置为侦听 模式,然后把另一个应用程序与之相连接。为此,先向对话框类()添加三个成员函数, 这三个函数是套接字类()的事件处理函数需要调用的。把三个函数的类型都指定为 void,访问权限为公共。指定第一个函数声明为 OnSend(),第二个函数的声明为 OnReceive,第三函数的声明为 OnClose。5) 发送和接收数据 如果两个应用程序间建立了连接,用户就能够在对话框窗口中的编辑框中输入文本 消息,然后单击“发送”按钮,就应该可以把消息发送到另一个应用程序,一旦消息发 送出去了,它将被添加到已发送消息的列表框中。 当“发送”按钮被单击之后,应用程序需要检查是否有消息输入了编辑框,获取该 消息的长度,并发送该消息,然后把此消息添加到列表框中。为了在应用程序中添加此 项功能,使用Class Wizard向“发送”按钮(ID:IDOK)的单击事件(BNCLICKED)添加 一个事件处理函数,注意不要接受默认的函数名,将函数名改成OnSendMsg(),编辑该 函数。 对于消息的接收方,当套接字的OnReceive事件被触发时,表明一个消息已经到达 了,可以用Receive()函数从套接字检索到该消息。如果消息被顺利检索到,需要把接 收的字符数组转换成Cstring类型,并把接收的消息添加到已接收的消息的列表框中。 通过编辑对话框类的OnReceive()函数。6) 终止连接 结束消息传送之后应该终止两个应用程序之间的连接,这个终止连接的操作是由客 户机应用程序的用户通过单击“断开”按钮来实现的。然后应用程序会接收到一个 OnClose套接字事件。和建立连接的过程相反,连接的套接字需要断开,发送消息的控 件需要置为禁用状态。在客户端,“连接”按钮控件由禁用状态变成可用,因为应用程序允许客户机程序改变某些参数,并打开与另一个服务器程序的连接。同时,服务器应用程序继续侦听是否有其他的连接请求,侦听的端口等信息不变。四 实验设备与器材配置1、能连网的个人PC机一台。2、Visual C+ 6.0 软件五 实验记录1、用户界面1) 选择类型:客户机/服务器;2) 输入部分:服务器名称、服务器端口、待发送消息;3) 输出部分:已发送的消息、接收到的消息、文件内容;4) 按钮:连接/侦听、断开、发送、上传文件、清空。2、功能测试记录实验中以同一台电脑作为服务器和客户机进行模拟,并分别从两个窗口发送信息至 对方,显示如下可见,可以成功进行通讯。此外,我们还可以通过修改代码,实现断开程序的功能。并实现自动清空。六 实验总结本次实验,在老师提供的示例代码和参考资料的基础上,我们实现了客户机和服务器间的通讯,此外我们对代码进行修改,能够通过“断开”真正实现断开功能。由于能力不够,还不能实现如图片传输和文件传输的功能,虽然这次实验未能够完成这些功能,但这些仍是值得思考并后续实现的功能。通过本次实验,我进一步了解熟悉MFC和网络编程,将课上理论知识能大概应用于编程实践,但对一些原理的理解不够透彻,一些比较基础的功能还未能实现,还有较长的一段路要走。 七 思考题或讨论题1 本次实验所涉及的“实体”是什么?实体间通过什么方式建立协议?2. 服务和协议的区别与联系?本次实验的协议过程(即客户-服务器方式)是怎样建立的?有哪些服务?3、本次实验的协议提供了什么服务?试想,用此协议还可以提供怎样的服务?这种服务在自动化学科领域的意义是什么?1、本次实验设计的“实体”为服务器和客户端,两者之间通过创建套接字、服务器端侦 听、客户端发送连接请求、服务器端同意连接等步骤建立协议,即以客户-服务器方 式建立协议。2、协议就是规则的集合。在网络中要做到有条不紊地交换数据,就必须遵循一些事先约 定好的规则。这些规则明确规定了所交换的数据的格式以及相关的同步问题。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network Protocol),它是控 制两个(或多个)对等实体进行通信的规则的集合,也就是水平的。网络协议也简称为协议。 协议由语法、语义和同步三部分组成。 (1)语法规定了传输数据的格式; (2)语义规定了所要完成的功能,即需要发出何种控制信息、完成何种动作以及做出 何总应答; (3)同步规定了执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能。 服务是指下层为紧向邻的上层提供的功能调用,也就是垂直的。对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现本层协议还需要使用下一层所提供的服务。 上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令在 OSI 中称为服务原语。OSI 将原语换分为四类: 1)请求(Request):由服务用户发往服务提供者,请求完成某项工作。 2)指示(Indication): 由服务器提供者发往服务用户,指示用户做某件事。 3)相应(Response):由服务用户发往服务提供者,作为指示的响应。 4)证实(Conformation):由服务提供者发往服务用户,作为对请求的证实。 这四类原语用于不同的功能,如建立连接、传输数据和断开连接等。有应答服务包括 全部四类原语,而无应答服务则只是请求和指示两个原语。 协议和服务在概念上是不一样的 。首先,本层协议的实现才能保证向上一层提供服务。本层的服务用户只能看到服务而无法看见下面的协议,即下面的协议对上层的服务用 户是透明的。其次,协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是 “垂直的”,即服务是由下层通过层间接口向上层提供的。另外,并非在一层内完成的全部 功能都称为服务,只有那些能够被高一层实体“看得见”的功能才称为服务。客户-服务器方式通过创建套接字、服务器端侦听、客户端发送连接请求、服务器端同意连接等步骤建立协议。服务器等待客户端的请求,在客户端提出连接请求后,同意并进行连接,然后进行数据通信,提供服务。本次实验中,主要提供了发送消息和接收消息等服务。3、本次实验的协议提供了信息传递服务,包括使用套接字进行发送和接收消息。此外, 用此协议还可以进行文本传输,或在此基础上优化为其它文件的传输,也可调整为实时或 延时等。 TCP/IP 协议有以下特点: (1)TCP/IP 协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准, 即使不考虑 Internet,TCP/IP 协议也获得了广泛的支持。所以 TCP/IP 协议成为一种联合 各种硬件和软件的实用系统。 (2)TCP/IP 协议并不依赖于特定的网络传输硬件,所以 TCP/IP 协议能够集成各种各样的网络。用户能够使用以太网(Ethernet)、令牌环网(Token Ring Network)、拨号线路 (Dial-up line)、 X.25 网以及所有的网络传输硬件。 (3)统一的网络地址分配方案,使得整个 TCP/IP 设备在网中都具有惟一的地址 (4)标准化的高层协议,可以提供多种可靠的用户服务。 因此,这种协议提供的服务应用将越来越广泛,且可以和硬件与软件相结合,对于硬件和软件经常两相结合的自动化领域就有了相对较大的作用。附录相关代码:void CTalkDlg:OnAccept()/对于服务器/接受连接请求m_sListenSocket.Accept(m_sConnectSocket);/激活消息输入和相关控件GetDlgItem(IDC_EDIT_MSG)->EnableWindow(TRUE);GetDlgItem(IDOK)->EnableWindow(TRUE);GetDlgItem(IDC_STATIC_MSG)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(TRUE);void CTalkDlg:OnClose() /关闭连接的套接字m_sConnectSocket.Close();/禁用消息输入和发送的相关控件GetDlgItem(IDC_EDIT_MSG)->EnableWindow(FALSE);GetDlgItem(IDOK)->EnableWindow(FALSE);GetDlgItem(IDC_STATIC_MSG)->EnableWindow(FALSE);/GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE);/清除列表框内容while(m_listSent.GetCount()!=0)m_listSent.DeleteString(0);while(m_listReceived.GetCount()!=0)m_listReceived.DeleteString(0);/是否为客户机if(m_cmbType.GetCurSel()=0)/对于客户机/激活与连接设置相关的控件GetDlgItem(IDC_BTN_CONNECT)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT_SERVNAME)->EnableWindow(TRUE);GetDlgItem(IDC_EDIT_SERVPORT)->EnableWindow(TRUE); GetDlgItem(IDC_STATIC_SERVNAME)->EnableWindow(TRUE);GetDlgItem(IDC_STATIC_SERVPORT)->EnableWindow(TRUE);GetDlgItem(IDC_STATIC_TYPE)->EnableWindow(TRUE); GetDlgItem(IDC_COMBO_TYPE)->EnableWindow(TRUE);专心-专注-专业

    注意事项

    本文(计算机网络第三次实验(共12页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开