全文预览已结束
付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 应用层的客户-服务器模式1. 实验目的l 了解基于Socket的C/S编程的概念l 了解winsock中函数的用法及其参数的含义l 掌握使用Socket开发程序的方法l 掌握C/S模式下网络通信的工作流程2. 实验原理2.1客户机-服务器模型网络应用的标准模型是客户/服务器模型 (Client/Server模型,简称C/S模型)。由客户程序和服务器程序共同完成一个应用任务,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户端和服务器。一般发起通信请求的程序被称为客户端,用户一般是通过客户端软件来访问某个服务。客户端应用程序通过与服务器建立连接,发送请求,然后接收服务器返回的内容。服务器则一般是等待并处理客户端请求的应用程序。它通常由系统执行,在系统生存期间一直存在,等待客户的请求,并且在接收到客户端的请求后,根据请求向客户端返回合适的内容。客户机与服务器之间的通信过程如图1所示:图1 客户端和服务器之间的通信过程这种C/S的通信模型用途十分广泛,现在的大多数网络程序都使用了这种类型。在服务器端,根据服务器请求方式的不同,服务器可以分为两种类型。(1)循环服务器这种模式是在同一时间只能处理一个客户端的请求。服务器在接收到客户端的请求后,处理这个请求,在处理完毕后才继续等待下一个请求的到来。如果在处理过程中有新的客户请求,将只能等待。这种模式通常只能用于处理速度较快,处理逻辑比较简单的服务器程序的开发,如Linux的时间服务器。(2)并发服务器这种模式在同一时间可以处理多个请求,服务器会建立多个处理客户端的请求的进程或者线程,服务器接收到一个客户端请求后,将按照一定的算法选择或者创建一个进程或者线程来处理这个客户端请求,而服务器可以立即返回等待下一个客户端请求的到来。显然这种处理模式可以尽量避免单处理模式中的对客户端请求响应不及时的问题,但是这种模式需要占用较多的CPU处理时间和较多的系统资源,并且需要处理多个进程或者线程之间的通信和数据共享,编程具有一定的复杂性。通常使用这种模式处理比较耗时或者对速度要求较高的服务,如文件传输服务(FTP)等。从上面的介绍中可以看出以下一个重要特点:服务器在交互开始前已运行,并且通常持续不断地接受请求、发送响应。而客户机是发出请求并等待响应的任何程序,它通常在有限次的使用服务器后终止。一般来说,服务器的执行过程如下:(1)打开通信信道(申请一下套接字),通知本地主机在某一知名端口接收客户机请求。(2)等候新的客户机请求到达该端口。(3)接收到请求,启动一个新的进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。(4)回到第二步,继续等待客户机请求。(5)如果不愿响应客户机请求,关闭服务器进程。2.2 网络通信基础知识和winsock相关的数据结构(这是winsock1.1版本):2.2.1 IP 地址和端口的介绍Internet 协议地址简称IP 地址,它是整个网络协议的核心。在不同的网络或相同的网络中的结点进行通信时,需要使用IP 地址。也就是说,Internet 网上的计算设备或主机都分配有一个惟一的地址,叫IP 地址。一个IP 地址长为32 比特,分为4个字节,比如:IP 地址10100110 01101111 00000001 00000110一般都是用二进制数位模式表示IP 地址,它是非常难以识记的,为容易阅读和理解,通常将IP 地址以4 个句点分隔开的十进制数字表示,称为点分十进制表示法( dotted decimal notation )。上面的IP 地址用这种方法表示为。端口(port) 是标志传输层协议和应用程序之间的数据接口,在客户端和服务器端通信时,真正完成通信功能的不是两台计算机,而是两台计算机上的进程。如果要标识具体的进程,需要引入新的地址空间,这是端口。定义端口是为了解决与多个应用程序同时进行通信的问题。每个端口有一个16 位的标志符,称为端口号。所以端口号的应用范围在0-65536之间,但1024 以下的端口号被标准服务保留,因此在这个协议中可以用到的端口号的范围在1024-65536 之间。2.2.2 IP地址和服务端口(PORT)的数据结构 struct sockaddr_in short sin_family;/必须设为AF_INET,在使用TCP/IP协议族时。 u_short sin_port;/通信端口 struct in_addr sin_addr;/用于把IP地址保存为一个4字节的整数 /点分十进制表示,从左到右存储 /usinged long inet_addr(const char FAR *cp) /该函数用于将以字符串表示的IP地址转换为一个整数char sin_zero8;2.2.3存储主机信息的结构struct hostent char FAR * h_name; /* official name of host */ char FAR * FAR * h_aliases; /* alias list */ short h_addrtype; /* host address type */ short h_length; /* length of address */ char FAR * FAR * h_addr_list; /* list of addresses */#define h_addr h_addr_list0 /* address, for backward compat */; 2.2.4 winsock 的初始化每个winsock应用都必须加载winsock DLL的相应版本(上述内容版本号市1.1),如果调用winsock之前没有加载winsock库将会返回错误。加载函数如下:int PASCAL FAR WSAStartup(IN WORD wVersionRequired, OUT LPWSADATA lpWSAData);wVersionRequired 指定准备加载的winsock库版本。高字节指定副版本,低字节指定主版本。2.2.5 winsock的卸载使用完winsock库以后,要把它卸载掉。卸载函数如下:int PASCAL FAR WSACleanup(void)2.3 网络通信所用的函数:l 创建套接字函数socket()l 指定本地地址bind()l 将套接字连接到目的地址connect()l 设置等待连接状态listen()l 接受连接请求accept()l 发送和接收数据send()/recv()和sendto()/recvfrom()l 关闭套接字closesocket() 上面这些是网络编程中用的最为广泛的几个函数,这些函数的详细介绍请参考附录A:Winsock网络编程介绍24 winsock 编程的基本知识用socket 实现计算机相互通信的基本流程请参考附录A:Winsock网络编程介绍3. 实验环境与分组3.1 实验环境l 本实验是在windows环境下,用VC+6.0来实现客户机与服务器之间传送数据的。有关VC+6.0环境的使用,请参考附录B:Visual C+6.0应用程序开发环境及使用l 两个同学一组,分别运行服务器端和客户端,进行通信实验。 3.2实验内容l 启动程序 找到“应用层客户_服务器模式”文件下的两个可执行程序:Server.exe和Client.exel 服务器端的运行:作为服务器端,服务器的程序首先要运行。运行服务器程序后,程序会自动解析出服务器的IP地址,然后根据程序的提示,输入和客户端进行连接的端口号;最后程序是询问是否向客户端发送应答信息,如果向客户端发送响应信息,则服务器在接收到一条信息后,会向客户端发送一条应答信息,如果不发送响应信息,则服务器端只接收来自客户端的信息。l 客户方端的使用:运行客户端程序后,要求要输入进行连接的服务器的IP地址和端口号,随后程序会询问是否接收服务器方的应答信息,如果要接收服务器方的应答信息,则客户端在发送一条信息后,会收到服务器方发来的响应信息,如果不接收服务器方的响应信息,则客户端只向服务器发送信息。最后,程序会询问和服务器连接后,发送信息的个数,根据客户端的输入情况,客户端向服务器端发送信息。3.3 扩展内容:l 通过阅读源程序,画出服务器端和客户端的程序流程图l 对源程序进行阅读分析,了解程序实现的具体的细节,掌握服务器和客户端传送数据的机制l 客户端和服务器端是怎样建立连接的?4. 实验要求4.1 基本要求 记录实验的基本数据,包括选用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作面移动设备列车安全技术措施培训
- 工作位置与人身安全培训课件
- 2025年中国储备粮管理集团有限公司内蒙古分公司春季招聘66人笔试历年参考题库附带答案详解
- 2025年《人民铁道》报业有限公司招聘高校毕业生1人(二)笔试历年参考题库附带答案详解
- 2025山东潍坊匠造食品有限公司招聘60人笔试历年参考题库附带答案详解
- 2025届保利发展控股校园招聘正式启动笔试历年参考题库附带答案详解
- 2025天津招聘某央企招聘笔试历年参考题库附带答案详解
- 2025四川资阳市雁江区区属国有企业招聘5人笔试历年参考题库附带答案详解
- 2025四川宜宾市江安县第二次选聘县属国有企业领导人员3人笔试历年参考题库附带答案详解
- 2025京东集团山西岗位招聘笔试历年参考题库附带答案详解
- 新教材统编版八年级语文下册期末考前划重点知识清单
- 2026北方化学工业股份有限公司技能人员招聘76人笔试模拟试题及答案详解
- 2026年新安全生产考试题及答案
- 16D303-2 常用风机控制电路图
- 2026深静脉血栓形成诊断和治疗指南(第四版)全面解读
- 2026年全国低压电工作业证复审考试题库(含答案)
- 江苏省凤凰出版传媒集团招聘笔试题库2026年
- 江苏省小学科学实验知识竞赛测试题(含答案)
- 2025年兵团三支一扶试题及答案
- 韵达用工合同范本
- 贵州省2024年7月普通高中学业水平合格性考试地理真题及答案解析
评论
0/150
提交评论