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框架的更多相关文章

  1. 04 返回静态文件的函数web框架

    04 返回静态文件的函数web框架 服务器server端python程序(函数版): import socket server = socket.socket() server.bind((" ...

  2. 03 返回静态文件的高级web框架

    03 返回静态文件的高级web框架 服务器server端python程序(高级版): import socket server=socket.socket() server.bind(("1 ...

  3. 06 返回静态文件的映射(函数/多线程)web框架

    06 返回静态文件的映射(函数/多线程)web框架 服务器server端python程序(函数版): import socket server = socket.socket() server.bin ...

  4. web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  5. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  6. django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  7. day 52 Django基础一之web框架的本质

    Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...

  8. 01.Django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  9. day 65 Django基础一之web框架的本质

      Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...

随机推荐

  1. An example shows several CIM-XML extension headers

    The example below shows several CIM-XML extension headers for a GetClass operation on the root/cimv2 ...

  2. SpringCloud入门(十一):Sleuth 与 Zipkin分布式链路跟踪

    现今业界分布式服务跟踪的理论基础主要来自于 Google 的一篇论文<Dapper, a Large-Scale Distributed Systems Tracing Infrastructu ...

  3. OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt

    OpenWrt For HiWiFi(HC5861) 自编译精减固件,极路由3自用固件 HC5861-uboot.bin v19.07.2 下载 支持 NTFS 读写 支持 Wi-Fi 5G 驱动 默 ...

  4. 【React踩坑记六】create-react-app创建的react项目通过iP地址访问(实现局域网内访问)

    同项目组的小伙伴想用自己的电脑访问我电脑上开发阶段的create-react-app创建的react项目. 试过了了各种内网穿透工具ngrok以及localtunnel等. 奈何打开效率实在太过于龟速 ...

  5. 怎样实现App安装来源追踪

    众所周知,国内的应用商店存在一定的限制,开发者很难有效监测到App安装来源的精准数据.但在实际推广中,广告效果.用户行为.付费统计.邀请关系等不同渠道的指标却是衡量渠道价值的关键,对App的运营推广和 ...

  6. 如何在Vue项目中优雅的使用swiper插件

    个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 开始之前,请先确保有一个基于webpack模板的项目(vue-cli脚手架 ...

  7. C# 对 TCP 客户端的状态封装

    TCP客户端连接TCP服务器端有几种应用状态: 与服务器的连接已建立 与服务器的连接已断开 与服务器的连接发生异常 应用程序可按需求合理处理这些逻辑,比如: 连接断开后自动重连 连接断开后选择备用地址 ...

  8. 简单模拟实现Rxjs Observable

    1.先定义类型 export type Observer = { next: (any) => void, complete?: (any) => void, } export inter ...

  9. Jmeter的简单使用

    前言 对于jmeter的使用有很多内容,本章节只是简单介绍jmeter的两个方面的内容:一个是使用jmeter模拟postman发送http请求,一个是使用jmete进行压力测试. 更多的内容请参考官 ...

  10. 面试官没想到一个Volatile,我都能跟他扯半小时

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...