服务器模型
硬件服务器
计算机主机
软件服务器
网络服务器,提供后端逻辑服务和请求处理的程序集合及架构
例如,web服务器等
服务器架构
服务器的组织形式
例如,C/S B/S
服务器追求
更快速,更安全,并发量更大
服务器模型
循环服务器模型
- 定义
循环处理客户端的请求,处理完一个继续处理下一个 - 缺点
不能同时处理多个请求,不允许某个客户端长期占用服务器资源 - 由于UDP不需要进行连接,所以循环服务器模型更加适合UDP通信
并发服务器模型
每有一个客户端就创建一个进程或线程处理客户端的具体请求事件,而主进程或主线程继续接受其他客户端的连接
多进程并发服务器模型
步骤
- 创建套接字、绑定、监听
- 接受客户端连接请求,创建新的进程
- 主进程继续接受下一个客户端连接请求,子进程处理客户端事件
- 有客户端断开则关闭响应的子进程
多线程并发服务器模型
步骤
- 创建套接字、绑定、监听
- 接受客户端连接请求,创建新的进程
- 主进程继续接受下一个客户端连接请求,子进程处理客户端事件
socketserver模块
- 多进程/多线程
- TCP/UDP
- streamhandler/datagramhandler
- ForkingMixIn/ThreadingMixIn
步骤
创建服务器类
创建处理类
使用创建的服务器类来产生服务器
FTP服务器
技术分析
TCP连接、多进程并发
实现步骤
- 创建网络连接
- 功能架构设计和客户端退出处理
- 实现list file
@ 客户端请求
@ 服务器端请求确认
@ 遍历文件夹下文件,把文件名发给客户端
@ 客户端接收并打印
os.listdir(path)
获取指定目录下所有文件列表
os.path.isfile(filename)
判断一个文件是否为普通文件 - 实现get file
@ 客户端请求
@ 服务器端请求确认
@ 客户端以写方式打开文件,服务器端以读的方式打开
@ 服务器read -> send
,客户端recv -> write
- 实现put file
@ 客户端请求
@ 服务器端请求确认
@ 客户端以读方式打开文件,服务器端以写的方式打开
@ 服务器recv -> write
,客户端read -> send
网友评论