• 服务器软件设计的算法和问题


    概念性的服务器算法:创建一个socket,将它绑定到一个熟知的port上,并期望在这个port上接收请求,接着进入无限loop,在循环中,服务器接受来自client的下一个请求,处理请求,结构应答,然后将这个应答发回给客户。

    Iterative server and concurrent server : iterative server 是在一个时刻只处理一

    个请求的一种服务器实现。

           Concurrent server 是在一个时刻可以处理多个请求的一种服务器。一般来说,并发服务器更难设计和构建,其最终代码页更复杂并且难以修改。

           面对连接和无连接服务器:区别就是选择TCP还是UDP的问题。

           因为已经选择了TCP的服务器,所以暂时不介绍UDP服务器问题。TCP服务器有点是容易编程,可靠性在协议上得到保证。

           面向连接服务器缺点:要求对每个连接都有一个单独的socket,而无连接的设计则允许从一个socket上与多个主机通信。最大缺点是TCP在空闲连接上根本不发送任何分组,比如在资源的使用上,服务器拥有分配给改连接的数据接口,包括缓冲空间,并且这些资源不能被重新分配。

     

           四种服务器类型:1.循环的无连接 2.循环的面向连接 3.并发的无连接 4.并发的面向连接。我们选择的是第四种。

           服务器处理时间:request processing time 为服务器处理单个鼓励的请求所花的时间。Observed response time 为客户发送请求至服务器响应直接的全部delay. 很明显,ORT不可能小于RPT。若N代表请求队列的平均长度,对刚刚的请求来说,它的观测响应时间大约是N/2 + 1个服务器请求处理时间。

           一个循环服务器是否够用?假设一个服务器设计能力可以处理K个客户,每个客户每秒发送R个请求,则此服务器的请求处理时间必须小于每请求1/KR秒。

     

           INADDR_ANY绑定熟知端口:bind为了某个套接字知名某个链接端点,它使用了结构sockaddr_in,该结构中含有IP地址和协议端口号。Bind不能只指明协议端口号而不指明IP地址。但是,如果选择指明的IP地址,那该主机只能有一个IP地址和服务器相连接。然而路由器或者多网卡机有多个IP,服务器就没办法得到其他IP的内容了。为了解决这个问题,socket定义了特殊常量INADDR_ANY,它可以代替IP地址,它指明了通配地址(wildcard address),它与该主机的任何一个IP地址都匹配。

  • 相关阅读:
    荣誉追记
    通过代码实现 Windows Mobile 窗体的最小化 (转)
    软件协会周年庆(高清晰)
    菜鸟级注册与限制
    Ajax Tree (转)
    转职场别做愤青
    菜鸟级分页用户控件
    Windows Mobile 常用键值(VK)对应表及系统文件夹简单介绍
    12.Linux软件包管理相关操作
    5.Docker应用
  • 原文地址:https://www.cnblogs.com/nickchan/p/3104390.html
Copyright © 2020-2023  润新知