python 简单web服务器,
本文主要为大家介绍Python静态Web服务器多任务版的实现实例。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010概述实施步骤1。导入线程模块2。设置端口号复用,程序出口端口立即释放3。当客户机和服务器建立连接时,创建子线程4。设置守护程序5。实现启动程序线程代码。
目录
使用多线程,web服务器可以同时处理多个用户的访问。当客户端和服务器的连接建立成功后,创建一个子线程,用子线程处理客户端的请求,防止主线程阻塞。将创建的子线程设置为守护主线程,防止主线程无法退出。
概述
实现步骤
导入线程
1.导入threading模块
TCP _ server _ socket . setsockopt(socket。SOL_SOCKET,SOCKET。SO_REUSEADDR,True)
2.设置端口号复用, 程序退出端口立即释放
设置目标的名称,通过元组传入new_socket参数。
sub_thread=线程。线程(target=handle_client_request,args=(new_socket,))
3.当客户端和服务器建立连接程,创建子线程
sub_thread.setDaemon(True)
4.设置守护主进程
sub_thread.start()
5.启动子线程
导入插座
导入线程
#处理客户的请求
定义句柄_客户端_请求(新_套接字):
#此处执行代码,表示连接建立成功。
recv _ client _ data=new _ socket . recv(4096)
if len(接收客户数据)==0:
打印(“关闭的浏览器”)
new _套接字. close()
返回
#解码二进制数据
recv _ client _ content=recv _ client _ data . decode(“utf-8”)
打印(接收客户内容)
#根据指定的字符串进行除法运算,最大除法数为2。
request _ list=recv _ client _ content . split( ,maxsplit=2)
#获取请求的资源路径
请求路径=请求列表[1]
打印(请求路径)
#判断请求的根目录是否为根目录,如果满足条件,则指定返回主页数据。
if request_path==/:
request_path=/index.html
尝试:
#动态打开指定的文件
用open(static request_path, rb )作为文件:
#读取文件数据
file_data=file.read()
e:除外
#请求的资源不存在,返回404数据
#响应行
response_line=找不到HTTP/1.1 404 \ r \ n
#响应标题
response _ header= server : pws 1.0 \ r \ n
用open(static/error.html , rb )作为文件:
file_data=file.read()
#响应者
response_body=文件数据
#拼接响应消息
response _ data=(response _ line response _ header \ r \ n )。编码( utf-8 )响应_正文
#发送数据
新套接字发送(响应数据)
else:
#响应行
response _ line= HTTP/1.1 200 OK \ r \ n
#响应标题
response _ header= server : pws 1.0 \ r \ n
#响应者
response_body=文件数据
#拼接响应消息
response _ data=(response _ line response _ header \ r \ n )。编码( utf-8 )响应_正文
#发送数据
新套接字发送(响应数据)
最后:
#关闭服务和客户端之间的套接字
new _套接字. close()
#程序输入功能
定义主():
#创建tcp服务器套接字
TCP _ server _ socket=socket . socket(socket。AF_INET,socket。袜子_流)
#设置端口号复用,程序出口端口立即释放。
TCP _ server _ socket . setsockopt(socket。SOL_SOCKET,SOCKET。SO_REUSEADDR,True)
#绑定端口号
tcp_server_socket.bind(( ,9000))
#设置监听
tcp_server_socket.listen(128)
而True:
#等待接受客户端的连接请求。
new_socket,IP _ port=TCP _ server _ socket . accept()
打印(ip端口)
#当客户端和服务器建立连接时,创建一个子线程。
sub_thread=线程。线程(target=handle_client_request,args=(new_socket,))
#设置守护程序主线程
sub_thread.setDaemon(True)
#启动线程执行相应的任务。
sub_thread.start()
if __name__==__main__:
主()
以上是Python静态Web服务器多任务版的实现实例的细节。关于Python静态Web服务器多任务的更多信息,请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。