服务器模型 C/S模型
socket 是什么 ?
一种进程间的通信技术 由伯克利大学(BSD) 发明, 才有了当前的互联网
几乎所有的C/S模型服务器, 底层都是socket实现的, web服务器也不例外, 只是web服务器用了:
HTTP协议
用python搭建简易的web服务器:
1. 导入相关模块
import os # 导入系统模块
import socket # 导入 socket包
from multiprocessing import Process # 导入多进程模块
2. 创建类并初始化
初始化出部分需要的属性 方便之后方法的使用
port 主机需要绑定的端口
class WebServer(object):
BASE_DIR = os.path.join(os.getcwd(), 'static') # 查询文件夹, 用来查找访问的文件
RESPONSE_STATUS = {
200: 'OK', 404: 'Not Found', 403: 'Forbid'} # 设置响应行可选返回状态码, 只选择了部分做演示
def __init__(self, port=8080):
"""
初始化参数
:param port:
"""
self.soc = self.create_server(port) # 初始化socket对象
self.new_fd: socket.socket = ... # 方便pycharm提示,防止pycharm报波浪线
self.request_dict = {
} # 设置空字典, 用于存储处理过后的请求头
self.response_dict = [('Server', 'my_server'), ('Content-Type', 'text/html; charset=utf-8')] # 设置响应头,因为可能有多个Set-Cookie, 所以用列表中的元组存储
3. 初始化socket对象 固定四部曲
- 创建socket对象
- 绑定address, ip及端口
- 防止服务器异常时, 端口的占用, 影响服务器的重启
- 转成监听模式
# 创建socket对象
def