python 服务器_Python实现简单的HTTP服务器

用Python实现简单的HTTP服务器

用于搭建http server的模块有如下三种:

1)BaseHTTPServer:提供基本的Web服务和处理器类,分别是HTTPServer及BaseHTTPRequestHandler;

2)SimpleHTTPServer:包含执行GET和HEAD请求的SimpleHTTPRequestHandler类;

3)CGIHTTPServer:包含处理POST请求和执行的CGIHTTPRequestHandler类。

在我目前的实现中,主要采用BaseHTTPServer模块。

一、 BaseHTTPServer模块

HTTPServer是一个SocketServer.TCPServer的子集,创建并监听HTTP套接字,分配requests到处理器(handler),

BaseHTTPRequestHandler在HTTP请求到达时进行处理,但其自身并不能对请求作出相应,由另一个派生类来处理每一个请求方法。BaseHTTPRequestHandler为子集提供许多类变量、实例变量和方法,其分析请求对象和请求头部,并根据请求类型调用相应的方法。一般这个模块不被直接使用,而是被用来作为构建功能性Web服务器的一个基类。

BaseHTTPRequestHandler其中的实例变量有:

1)client_address 包含关联的客户端地址(host,

port)

2)command 包含请求类型(eg: get

)

3)path 包含的请求路径

4)request_version 包含请求版本的字符串(eg:

'HTTP/1.0')

5)headers

6)rfile 输入流

7)wfile

包含写到客户端响应的输出流

BaseHTTPRequestHandler的类变量有:

1)server_version

指定服务器软件版本

2)sys_version Python系统版本

3)error_message_format

4)protocol_version

响应中使用的HTTP协议版本

BaseHTTPRequestHandler部分操作

1)handle()

2)send_error(code[, message])

发送并记录一个完整的错误回复到客户端

3)send_response(code[,

message]) 发送一个响应头并记录已接收的请求

4)send_header(keyword, value)

编写一个指定的HTTP头到输出流

5)version_string()

饭后服务器软件的版本字符串

日志记录相关部分没有一一列出。。。。

二、简单创建server实例

以下是一个简单的创建http server的例子,网上有些是采用多线程实现的比较复杂的例子

1. 创建server

1)DOS

命令

在DOS里cd到准备做服务器根目录的路径下,运行命令

python -m BaseHTTPServer [port]

默认的端口号是8000, 服务器根目录就是运行python命令的工作目录,server创建好后默认启动成功

2)Python脚本启动

fromBaseHTTPServerimportHTTPServer, BaseHTTPRequestHandler

classTestHTTPHandle(BaseHTTPRequestHandler):

defdo_GET(self):

buf = 'It works"

self.protocal_version = “HTTP/1.1"

self.send_response(200)

self.send_header("Welcome","Contect")

self.end_headers()

self.wfile.write(buf)

defstart_server(port):

http_server = HTTPServer(('[IP]', int(port)), TestHTTPHandler)

http_server.serve_forever() #设置一直监听并接收请求

其中,IP为给localhost设定的访问地址

2. 浏览器访问

3. 服务器关闭

1) dos

在运行界面中输入

"ctrl + C" 停止

2)python脚本

需停止端口监听及相关python进程

def stop_server(server)

server.sorket.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值