




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络服务器的类型分析和比较匡文亚2010032020015 集成电路设计与集成系统 邮箱:1070817439摘要:本文介绍了服务器的概念进行详细说明,然后说明了它在现代社会按不同类别的分类,并以循环服务器和并发服务器为例,详细介绍了循环服务器和并发服务器,以及其工作原理和它们的应用范围,最后将它们进行比较。比较从它们的各自的特点,服务器算法,分类,结构进程以及它们的应用场合入手一层一层的分析,最后以一个单进程并发服务器实例为例,说明了它们编程方式和内容以及在现实的应用。一网络服务器的类型分析 服务器是一种高性能计算机,作为网络的节点,存储、处理网络上80的数据、信息,因此也被称为网络的灵魂。做一个形象的比喻:服务器就像是邮局的交换机,而微机、笔记本、PDA、手机等固定或移动的网络终端,就如散落在家庭、各种办公场所、公共场所等处的电话机。我们与外界日常的生活、工作中的电话交流、沟通,必须经过交换机,才能到达目标电话;同样如此,网络终端设备如家庭、企业中的微机上网,获取资讯,与外界沟通、娱乐等,也必须经过服务器,因此也可以说是服务器在“组织”和“领导”这些设备。 服务器发展到今天,适应各种不同功能、不同环境的服务器不断地出现,分类标准也多种多样。 按应用层次可以分为入门级服务器,工作组级服务器,部门级服务器,企业级服务器 ;按服务器的处理器架构划分把服务器分为CISC架构服务器、RISC架构服务器和VLIW架构服务器三种;按服务器按用途划分为通用型服务器和专用型服务器两类;按服务器的机箱结构来划分,可以把服务器划分为“台式服务器”、“机架式服务器”、“机柜式服务器”和“刀片式服务器”四类。本文则讲诉最基本的分类循环服务器和并发服务器。(一) 循环服务器的工作原理及应用范围l 循环服务器又分为循环面向连接和无连接服务器。循环服务器是最简单的,客户按照顺序等待。是否能够满足要求取决于所需的反应时间l 观测响应时间:客户发送请求到服务器相应之间的全部时延。l 请求处理时间:服务器处理单个孤立的请求所花费的时间。l 循环服务器一次处理一个请求。如果N代表请求的平均长度,观测响应时间大约是N/2+1服务请求处理时间l 如果一个服务器设计处理K个客户,每个客户每秒发送R个请求,服务器请求处理时间必须小于美请求1/KR秒。否则请求队列将溢出。这是设计者必须考虑并发实现(三)并发服务器的工作原理及应用范围 不同于顺序服务器,并发服务器就要能在一个时间为多个客户端提供服务。 例如,一个聊天服务器可能服务一个特定的客户端数小时 在停止为这个客户端服务之前服务器不能等待, 除非是在等待一下个客户端到来之前的间隙才能等待。我们将提供服务从 守护进程移至它自己的服务进程。 然而,因为每个子进程都继承所有打开的文件(套接字被像文件一样处理), 新进程不仅继承“accept()返回的句柄,” 那是指调用accept返回的套接字;新进程也继承 顶级套接字,这是顶级进程一开始打开的套接字。然而,服务进程不需要这个套接字, 应该立即关闭(close)它。同样的, 守护进程不再需要 accept()返回的套接字, 不仅应该,还必须 关闭(close)它否则, 那迟早会耗尽可用的文件描述符。在服务进程完成服务之后, 它将关闭accept()返回的套接字。 它不会返回到accept,而是退出进程。在UNIX上,一个进程并不真正的退出, 而是返回至父进程。典型情况中, 父进程等待(wait)子进程, 并取得一个返回值。但是,我们的守护进程 不能简单的停止或等待,那有违建立其它进程的整个目的。 但是如果从不使用wait, 它的子进程可能会成为僵尸 不再有功用可仍然徘徊着。出于那样的原因,守护进程 需要在初始化守护进程阶段设置 信号处理程序。 至少要处理信号SIGCHLD, 这样守护进程可以从系统清除僵尸返回值并释放僵尸占用的系统资源。这是现在我们的流程图包含一个进程信号框的原因, 它不与任何其它框相连接。顺便说一句,许多服务器程序也处理SIGHUP, 作为超级用户发出的要求重读配置文件的信号。 这允许我们不必终止或重启服务器程序就改变设置。二网络服务器的类型比较以及实例介绍1 循环服务器和并发服务器都要分为无连接和面向连接的。2 循环服务器:每次处理一个客户请求, 处理完一个客户请求后才处理下一个客户请求. 并发性服务器:同时处理多个客户请求.3 循环服务器的特点:每次处理时间都很少;服务器实现简单 并发性服务器的特点:开销少;共享存储器;可以监控;增加了编程的复杂性;必须使用同步机制协调线程对全局变量和一些库程序的访问;必须弄清一些可能影响整个进程的系统函数。4 (1)循环无连接服务器算法创建套接字并将其绑定到所提供服务的熟知端口上;重复读取来自客户的请求,构造响应,按照应用协议向客户发回响应。(2) 循环面向连接服务器算法创建套接字并将其绑定到它所提供服务的熟知端口上; 将该端口设置为被动模式,使其准备为服务器所用;从该套接字上接收下一个连接请求,获得该连接的新的套接字;重复地读取来自客户的请求,构造响应,按照应用协议向客户发回响应;当某个特定客户完成交互时,关闭连接,并返回步骤3以接受新的连接(3) 并发无连接服务器算法 a) 主1、创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为未连接的b) 主2、反复调用recvfrom接收来自客户的下一个请求,创建一个新的从线程来处理响应c) 从1、从来自主进程的特定请求以及到该套接字的访问开始d) 从2、根据应用协议构造应答,并用sendto将该应答发回给客户e) 从3、退出(即:从线程处理完一个请求后就终止) (4) 并发面向连接服务器算法a) 主1、创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为面向连接b) 主2、将该端口设置为被动模式c) 主3、反复调用accept以便接收来自客户的下一个连接请求,并创建新的从线程或者进程来处理响应d) 从1、由主线程传递来的连接请求开始e) 从2、用该连接与客户进行交互;读取请求并发回响应f) 从3、关闭连接并退出5 循环服务器的进程结构 循环的无连接的服务器进程结构只需要一个执行线程循环的面向连接的服务器进程结构使用一个单执行线程;使用两个套接字:一个套接字处理请求,另外一个套接字处理和客户的通信(临时的)。6 适用场合(1) 循环的和并发的:n 如果循环方案产生的响应时间对应用来说足够,就可以使用循环;否则需要并发(2)真正的和表面上的并发性:n 线程或切换环境的开销大,服务器需要在多个连接之间共享或者交换数据,用单线程;n 使用线程开销不大或者要得到最大并发性,使用多进程(3)面向连接的和无连接的:n 应用协议处理了可靠性问题,或者应用在局域网环境内,使用无连接的传输。7应用实例 *单进程并发服务器实例。该程序采用单进程并发服务器算法实现的。*/#include #include #include #include #include #include #include #include #include #define PORT 1234 /服务器端口#define BACKLOG 5 /listen队列中等待的连接数#define MAXDATASIZE 1024 /缓冲区大小typedef struct _CLIENT /客户端结构体int fd; /客户端socket描述符char* name;struct sockaddr_in addr; /客户端地址信息结构体char* data; CLIENT; void process_cli(CLIENT *client, char* recvbuf, int len); /客户请求处理函数void savedata(char* recvbuf, int len, char* data);main()int i, maxi, maxfd,sockfd;int nready;ssize_t n;fd_set rset, allset; /select所需的文件描述符集合int listenfd, connectfd; /socket文件描述符struct sockaddr_in server; /服务器地址信息结构体CLIENT clientFD_SETSIZE; /FD_SETSIZE为select函数支持的最大描述符个数char recvbufMAXDATASIZE; /缓冲区int sin_size; /地址信息结构体大小if (listenfd = socket(AF_INET, SOCK_STREAM, 0) = -1) /调用socket创建用于监听客户端的socketperror(Creating socket failed.);exit(1);int opt = SO_REUSEADDR;setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt); /设置socket属性bzero(&server,sizeof(server);server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr = htonl (INADDR_ANY);if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr) = -1) /调用bind绑定地址perror(Bind error.);exit(1); if(listen(listenfd,BACKLOG) = -1) /调用listen开始监听perror(listen() errorn);exit(1);sin_size=sizeof(struct sockaddr_in);/初始化selectmaxfd = listenfd; maxi = -1; for (i = 0; i FD_SETSIZE; i+) clienti.fd = -1; FD_ZERO(&allset); /清空FD_SET(listenfd, &allset); /将监听socket加入select检测的描述符集合while(1)struct sockaddr_in addr;rset = allset; nready = select(maxfd+1, &rset, NULL, NULL, NULL); /调用selectprintf(select saw rset actions and the readfset num is %d. n,nready );if (FD_ISSET(listenfd, &rset) /检测是否有新客户端请求printf(accept a connection.n);/调用accept,返回服务器与客户端连接的socket描述符if (connectfd = accept(listenfd,(struct sockaddr *)&addr,(socklen_t *)&sin_size)=-1) perror(accept() errorn);continue;/将新客户端的加入数组for (i = 0; i FD_SETSIZE; i+)if (clienti.fd maxfd) maxfd = connectfd; /确认maxfd是最大描述符if (i maxi) /数组最大元素值maxi = i; if (-nready = 0) continue; /如果没有新客户端连接,继续循环for (i = 0; i = maxi; i+) if ( (sockfd = clienti.fd) 0) /如果客户端描述符小于0,则没有客户端连接,检测下一个continue; if (FD_ISSET(sockfd, &rset) /检测此客户端socket是否有数据 printf(recv occured for connect fd%d.n,i);if ( (n = recv(sockfd, recvbuf, MAXDATASIZE,0) = 0) /从客户端socket读数据,等于0表示网络中断close(sockfd); /关闭socket连接printf(Client( %s ) closed connection. Users data: %sn,,clienti.data);FD_CLR(sockfd, &allset); /从监听集合中删除此socket连接clienti.fd = -1; /数组元素设初始值,表示没客户端连接delete ;delete clienti.data; elseprocess_cli(&clienti, recvbuf, n); /接收到客户数据,开始处理if (-nready name
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB61T 859-2014 玉米 莱科818规范
- DB61T 836-2014 棉花 中棉所60规范
- 材料供需合同(标准版)
- 外墙干挂石材合同(标准版)
- 储备库供应链管理与优化方案
- 出口销售合同样本2篇
- 应急救援物资应急保障能力评估方案
- 2025年湖南省高速公路集团有限公司所属分子公司长期公开招聘备考练习试题及答案解析
- 2025年南平市属校紧缺急需学科教师招聘16人(二)备考练习题库及答案解析
- 2025昆明市第十二中学教育集团聘用制教师招聘考试参考试题及答案解析
- GB 11122-2025柴油机油
- 2025年河南开封产城融合投资集团有限公司招聘考试笔试试题(含答案)
- 锂电池充电安全管理制度
- 重庆市荣昌区招聘社区工作者后备人选考试真题2024
- 制造业生产流程质量管理及保证措施
- 2025秋 名师金典高考总复习 英语 课件05 第一部分 必修第一册 UNIT 4 NATURAL DISASTERS
- 颈椎损伤的急救与护理
- 入院出院转科培训
- 2025年呼伦贝尔农垦集团有限公司招聘笔试参考题库含答案解析
- 【课件】物质的变化和性质-2024-2025学年九年级化学人教版(2024)上册
- 统编语文教材八年级上册第三单元整体设计
评论
0/150
提交评论