06 返回静态文件的映射(函数/多线程)web框架
06 返回静态文件的映射(函数/多线程)web框架
服务器server端python程序(函数版):
import socket
server = socket.socket()
server.bind(("127.0.0.1", 8888))
server.listen() def func_html(conn):
with open("index.html", "rb")as f:
conn.send(f.read()) def func_js(conn):
with open("index.js", "rb")as f:
conn.send(f.read()) def func_css(conn):
with open("index.css", "rb")as f:
conn.send(f.read()) def func_img(conn):
with open("index.png", "rb")as f:
conn.send(f.read()) def func_ico(conn):
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) respones_back(conn,path)
服务器server端python程序(函数版)
服务器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):
with open("index.html", "rb")as f:
conn.send(f.read())
def func_js(conn):
with open("index.js", "rb")as f:
conn.send(f.read())
def func_css(conn):
with open("index.css", "rb")as f:
conn.send(f.read())
def func_img(conn):
with open("index.png", "rb")as f:
conn.send(f.read())
def func_ico(conn):
with open("favicon.ico","rb")as f:
conn.send(f.read())
def respones_back(conn,path,func_mappers):
conn.send("HTTP/1.1 200 ok \r\n\r\n".encode("utf-8"))
for mapper in func_mappers:
if path == mapper[0]:
mapper[1](conn)
break
conn.close()
# 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判断
func_mappers=[("/",func_html),
("/index.js",func_js),
("/index.css",func_css),
("/index.png",func_img),
("/favicon.ico",func_ico)]
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)
respones_back(conn,path,func_mappers)
服务器server端python程序(函数映射版)
服务器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())
服务器server端python程序(多线程版)
服务器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"))
for mapper in func_mappers:
if path == mapper[0]:
mapper[1](conn)
break
conn.close()
# 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判断
func_mappers=[("/",func_html),
("/index.js",func_js),
("/index.css",func_css),
("/index.png",func_img),
("/favicon.ico",func_ico)]
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())
服务器server端python程序(多线程映射版)
index.html:

<!DOCTYPEhtml> <htmllang="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> <scriptsrc="index.js"></script> </html>
index.html

06 返回静态文件的映射(函数/多线程)web框架的更多相关文章
- 05 返回静态文件的多线程web框架
05 返回静态文件的多线程web框架 服务器server端python程序(多线程版): import socket from threading import Thread,currentThrea ...
- 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 ...
- flask模板应用-加载静态文件:添加Favicon,使用CSS框架,使用宏加载静态资源
加载静态文件 一个Web项目不仅需要HTML模板,还需要许多静态文件,比如CSS.JavaScript文件.图片和声音声.在flask程序中,默认需要将静态文件存储在与主脚本(包含程序实例的脚本)同级 ...
- asp.net core 系列之静态文件
这篇讲解asp.net core中的静态文件(大致翻译于官网). 静态文件,例如HTML,CSS, images和JavaScript. 要想直接被客户端访问,需要做一些配置. 一.Serve sta ...
- BCB常用文件与字符串函数
VCL库函数简介 一.BORLAND C++ BUILDER VCL的内存管理函数 1. AllocMem 在队中分配指定字节的内存块,并将分配的每一个字节初始化为 0.函数原型如下: void * ...
- Discuz!NT静态文件缓存(SQUID)
在目前最新版本的产品中,我们提供了缓存静态文件的解决方案,就是使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,其中可以外链的静态文件包括: 1.Disc ...
- Express static 托管静态文件 理解
今天偶尔看了一下服务端渲染,遇到了express.static, 在以前学习webpack配置服务端渲染时,也使用express.static 中间件,两者配置不太一样,由于当时也没有认真学,所以 一 ...
- Asp .Net core 2 学习笔记(3) —— 静态文件
这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...
随机推荐
- Python logging 模块打印异常 exception
logger.exception(sys.exc_info())
- Linux网络管理员:网络概论
1.TCP/IP网络 包是适合通过网络传输的一小段数据,交换发生于网络的每一个链接点.当不同来源的包必须经过同一条线路传输数据时,这些包将被交替传输. 2.TCP/IP协议组 TCP/IP协议簇是In ...
- 负载均衡服务之HAProxy访问控制ACL
前文我们聊到了haproxy的错误页的配置,自定义日志的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12797913.html:今天我们主要来看看hap ...
- 【shell】shell脚本入门
1. 前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚 ...
- CSS样式2
1.css重用 <style> .cl{ ... } .c2{ ... } .c{ ... } </style> <div class='c c2'></di ...
- jQuery dataTables四种数据来源[转]
2019独角兽企业重金招聘Python工程师标准>>> 四种数据来源 对于 dataTables 来说,支持四种表格数据来源. 最为基本的就是来源于网页,网页被浏览器解析为 DOM ...
- Eclipse Mac OS 安装 Subversion插件subclipse 缺失JavaHL解决方案
安装 SVN 插件 subclipse 时可能遇到问题 subclipse 安装完成后,当我们选择使用 的时候还是会提示:javaHL not available, SVN接口选择 client:选择 ...
- 在CentOS 7中安装配置JDK8
为什么80%的码农都做不了架构师?>>> ###说明 参考博客:http://blog.csdn.net/czmchen/article/details/41047187 系统环 ...
- RF(三层封装设计)
一.用例分层思想 元素层:需要导入 Selenium2Library 库 包含所有的元素定位 流程层:需要导入 元素层.txt 资源 封装用例流程 案例层:需要导入 流程层.txt 资源 输出用例,传 ...
- speedtest 测试服务器上传下载速度
下载speedtest.py wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py 赋予执行权限 ...