05 返回静态文件的多线程web框架
05 返回静态文件的多线程web框架
服务器server端python程序(多线程版):
 import socket
 from threading import Thread,currentThread,activeCount,enumerate
 server = socket.socket()
 server.bind(("127.0.0.1", 8888))
 server.listen()
  def func_html(conn):
     print("html>>>",currentThread())
     with open("index.html", "rb")as f:
         conn.send(f.read())
 def func_js(conn):
     print("js>>>", currentThread())
     with open("index.js", "rb")as f:
         conn.send(f.read())
 def func_css(conn):
     print("css>>>", currentThread())
     with open("index.css", "rb")as f:
         conn.send(f.read())
 def func_img(conn):
     print("img>>>", currentThread())
     with open("index.png", "rb")as f:
         conn.send(f.read())
 def func_ico(conn):
     print("icon>>>", currentThread())
     with open("favicon.ico","rb")as f:
         conn.send(f.read())
 def respones_back(conn,path):
     conn.send("HTTP/1.1 200 ok \r\n\r\n".encode("utf-8"))
     if path == "/":
         func_html(conn)
     elif path == "/index.js":
         func_js(conn)
     elif path == "/index.css":
         func_css(conn)
     elif path == "/index.png":
         func_img(conn)
     elif path == "/favicon.ico":
         func_ico(conn)
     conn.close()
 if __name__ == '__main__':
     while  1:
         conn, client_addr = server.accept()
         http_request=conn.recv(1024).decode("utf-8")
         path=http_request.split("\r\n")[0].split(" ")[1]
         print("path>>>",path)       
         # respone_back(path)
         #开线程进行异步处理
         task=Thread(target=respones_back,args=(conn,path))
         task.start()
         # print("threads>>>",activeCount(),enumerate()) #查看当前存活的线程和数量
客户端浏览器访问:
在浏览器地址栏直接输入地址端口:127.0.0.1:8888
index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="index.css">
<link rel="icon" href="favicon.ico">
<title>多线程版</title>
</head>
<body>
<div id="d1">
<h1>多线程版的页面:本html页面引用了外部本地css样式和js代码(本地图片)</h1>
</div>
<img src="index.png" alt="本地图片" title="本地图片">
</body>
<script src="index.js"></script>
</html>

05 返回静态文件的多线程web框架的更多相关文章
- 04 返回静态文件的函数web框架
		04 返回静态文件的函数web框架 服务器server端python程序(函数版): import socket server = socket.socket() server.bind((" ... 
- 03 返回静态文件的高级web框架
		03 返回静态文件的高级web框架 服务器server端python程序(高级版): import socket server=socket.socket() server.bind(("1 ... 
- 06 返回静态文件的映射(函数/多线程)web框架
		06 返回静态文件的映射(函数/多线程)web框架 服务器server端python程序(函数版): import socket server = socket.socket() server.bin ... 
- web框架的本质
		一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ... 
- web 框架的本质及自定义web框架     模板渲染jinja2   mvc 和 mtv框架   Django框架的下载安装   基于Django实现的一个简单示例
		Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ... 
- django基础一之web框架的本质
		一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ... 
- day  52  Django基础一之web框架的本质
		Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ... 
- 01.Django基础一之web框架的本质
		一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ... 
- day  65  Django基础一之web框架的本质
		Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ... 
随机推荐
- 牛客网练习赛61 A+B
			A.打怪 思路:先判定当小怪的攻击力为0时,你能杀无数只怪,因为小怪A不动你,然后再计算每个小怪最多能给你造成多少伤害(用小怪的血量除以你的攻击力,也就是你砍它几下它会死,你先手,所以小怪肯定比你少砍 ... 
- var、let、const
			var.let.const之间的区别和使用 1.var声明变量可以重复声明,而let不可以重复声明 let a = 1; let a = 2; var b = 3; var b = 4; a // I ... 
- 再也不用c刷题了!!——c++刷题必备
			致读者: 博主是一名数据科学与大数据专业大二的学生,真正的一个互联网萌新,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于困惑的读者.由于水平有限,博客中难免会有一些错误 ... 
- JS省城级联
			2019独角兽企业重金招聘Python工程师标准>>> 这里是HTML内容 <label class="control-label col-md-2 col-sm-3 ... 
- Nginx访问日志.Nginx日志切割
			11月27日任务 12.10 Nginx访问日志12.11 Nginx日志切割12.12 静态文件不记录日志和过期时间 1.Nginx访问日志 示例一: 日志格式 vim /usr/local/ngi ... 
- P1465 序言页码 Preface Numbering (手推)
			题目描述 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 V 5 X 10 L 50 C 100 D 500 M 1000 最多3个同样的可以表示为 ... 
- 曹工谈并发:Synchronized升级为重量级锁后,靠什么 API 来阻塞自己
			背景 因为想知道java中的关键字,对应的操作系统级别的api是啥,本来打算整理几个我知道的出来,但是,尴尬的是,我发现java里最重要的synchronized关键字,我就不知道它对应的api是什么 ... 
- Python(Redis 中 Set/Zset 类型数据和其他操作)
			1.redis 基本操作命令 Set 操作 Set 集合就是不允许重复的列表 无序集合 sadd(name,values) 给 name 对应的集合中添加 1 个或多个元素 import redis ... 
- varnish 项目实战
			1.工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp ... 
- P2432 zxbsmk爱查错
			描述:https://www.luogu.com.cn/problem/P2432 给你一个主串以及若干个子串,求最少需要删除几个字母,使得主串能由一些子串组成. dp [ i ] 表示前 i 个字符 ... 
