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

  1. 05 返回静态文件的多线程web框架

    05 返回静态文件的多线程web框架 服务器server端python程序(多线程版): import socket from threading import Thread,currentThrea ...

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

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

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

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

  4. flask模板应用-加载静态文件:添加Favicon,使用CSS框架,使用宏加载静态资源

    加载静态文件 一个Web项目不仅需要HTML模板,还需要许多静态文件,比如CSS.JavaScript文件.图片和声音声.在flask程序中,默认需要将静态文件存储在与主脚本(包含程序实例的脚本)同级 ...

  5. asp.net core 系列之静态文件

    这篇讲解asp.net core中的静态文件(大致翻译于官网). 静态文件,例如HTML,CSS, images和JavaScript. 要想直接被客户端访问,需要做一些配置. 一.Serve sta ...

  6. BCB常用文件与字符串函数

    VCL库函数简介 一.BORLAND C++ BUILDER VCL的内存管理函数 1. AllocMem 在队中分配指定字节的内存块,并将分配的每一个字节初始化为 0.函数原型如下: void * ...

  7. Discuz!NT静态文件缓存(SQUID)

    在目前最新版本的产品中,我们提供了缓存静态文件的解决方案,就是使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,其中可以外链的静态文件包括:      1.Disc ...

  8. Express static 托管静态文件 理解

    今天偶尔看了一下服务端渲染,遇到了express.static, 在以前学习webpack配置服务端渲染时,也使用express.static 中间件,两者配置不太一样,由于当时也没有认真学,所以 一 ...

  9. Asp .Net core 2 学习笔记(3) —— 静态文件

    这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...

随机推荐

  1. 咦,Java拆分个字符串都这么讲究

    提到 Java 拆分字符串,我猜你十有八九会撂下一句狠话,"这有什么难的,直接上 String 类的 split() 方法不就拉到了!"假如你真的这么觉得,那可要注意了,事情远没这 ...

  2. 13个Python图形库

    By Django中国社区 at 2013-04-27 07:49 Python的13大图形库,matplotlib功能最强大,Cairoplot最漂亮,django-chartit与Django集成 ...

  3. 理解分布式一致性:Paxos协议之Basic Paxos

    理解分布式一致性:Paxos协议之Basic Paxos 角色 Proposal Number & Agreed Value Basic Paxos Basic Paxos without f ...

  4. SQL语句学习(一)

    这篇文章用来记录再学习SQL语句的过程. 首先,我们从简单的创建表开始.创建表的语法是CREATE TABLE 表名(列1的名字  列1的属性,列2的名字  列2的属性...); 如果希望将某一列作为 ...

  5. Everything 本地磁盘文件搜索工具下载!

    如何运用布尔算子? AND(且)是缺省使用的布尔算子. 例如:如果要搜索 foo 和 bar 同时出现的文件:foo bar 如果从两者之中任一个都可以,则用 | 介于两者之间. 例如:如果要搜索.j ...

  6. 数据库SQL语言从入门到精通--Part 2--MySQL安装

    数据库从入门到精通合集(超详细,学习数据库必看) 首先给出的简单安装方式,文末给出标准的安装方式. 第一步下载我的压缩包 链接:https://pan.baidu.com/s/1EE40dU0j2U1 ...

  7. 杭电的题,输出格式卡的很严。HDU 1716 排列2

    题很简单,一开始写代码,是用整数的格式写的,怎么跑都不对,就以为算法错了,去看大佬们的算法STL全排列:next_permutation(); 又双叒叕写了好几遍,PE了将近次,直到跑了大佬代码发现, ...

  8. Centos7 team 绑定多网卡

    1.nmcli connection show 查看所有的网络连接 nmcli connection show 接下来我们要使用 ens37 ens38 两个网卡绑定 , 绑定的网卡取名: agg-e ...

  9. 过滤idea一些不需要的文件和文件夹的显示,在使用svn的时候可以很方便的过滤不需要提交的文件

    *.classpath;*.gitignore;*.hprof;*.idea;*.iml;*.lst;*.project;*.pyc;*.pyo;*.rbc;*.settings;*.sh;*.yar ...

  10. 整理高度塌陷与BFC

    当面试官问道你高度塌陷时,人们第一想到的方法一定是 .clearfix::after { content: ''; display: block; clear: both; visibility: h ...