Skr-Eric的网络编程课堂(十)-- 服务器模型

服务器模型

 

硬件服务器 : 主机  集群

厂商 : IBM  HP   联想   浪潮

软件服务器 :编写的服务端应用程序,在硬件服务器上运行,一般依托于操作系统,给用户提供一套完整的服务

 

httpserver  ---》  处理http请求

webserver ---》 网站的后端应用服务器程序

邮箱服务器 --》 邮件处理

ftp文件服务器 --》 文件的上传下载

 

功能 : 网络连接   逻辑处理   数据交互   数据传输

        协议的实现

 

结构 : c/s   客户端服务器模型

        b/s   浏览器服务器模型

 

服务器目标 : 处理速度更快,并发量更高,安全性更强

硬件 : 更高的配置,更好的集成分布技术,更好的网络优化和网络安全技术

软件 : 占用资源更少,运行更稳定,算法更优良,安全性更好,并发性更高,更容易扩展

 

基础服务端模型

 

循环模型: 循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个

    优点 : 实现简单,占用资源少

    缺点 : 无法同时处理多个客户端任务

 

    适用情况 : 处理的任务可以短时间完成,不需要建立并发,更适合udp使用

 

并发模型:能够同时处理多个客户端请求

    IO并发 : IO多路复用

        优点 : 资源消耗少,IO处理速度快

缺点 : 不能适用cpu密集型程序

 

    多进程/多线程并发:为每个客户端创建单独的进程线程,执行请求

 

        优点 : 每个客户端可以长期占有服务器运行程序

                能够使用多核资源,可以处理IO或者cpu运算

缺点 : 消耗系统资源高

  

多进程并发模型

 

使用fork实现多进程并发

1. 创建套接字,绑定,监听

2. 等待接收客户端请求

3. 创建新的进程处理客户端请求

4. 原有进程继续等待接收新的客户端连接

5. 如果客户端退出则关闭子进程

 

cookie:

在父进程中忽略子进程状态改变,子进程退出自动由系统处理

signal.signal(signal.SIGCHLD,signal.SIG_IGN)

 

ftp文件服务器

 

项目功能

* 服务端和客户端两部分,要求启动一个服务端,可以同时处理多个客户端请求

* 功能 : 1. 可以查看服务端文件库中所有的普通文件

          2. 从客户端可以下载文件库的文件到本地

  3. 可以将本地文件上传的服务端文件库

  4. 退出

* 客户端使用print在终端打印简单的命令提示,通过命令提示发起请求

 

1. 技术分析 (fork  tcp 并发)

2. 每个功能要单独封装,整体功能写在一个类中

3. 如何搭建整体架构,完成网络通讯

 

功能分析

1. 获取文件列表

   客户端 :  * 发送请求

              * 得到回复判断能否获取列表

      * 接收文件名称列表打印

   服务端 : * 接收请求

             * 判断请求类型

     * 判断能否满足请求,回复信息确认

     * 执行请求发送文件列表

    

cookie:

os.listdir(path)  获取目录中文件列表

os.path.isfile()  判断是否为普通文件

os.path.isdir()  判断是否为目录

 

2 文件下载

  客户端 : * 发送请求 (文件名)

            * 得到回复判断能否下载

    * 下载文件

 

  服务端 : * 接收请求

            * 判断请求类型

    * 判断能否满足请求,回复信息确认

    * 执行请求发送文件

 

 

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

你可能感兴趣的:(服务器模型)