zoukankan      html  css  js  c++  java
  • 05 返回静态文件的多线程web框架

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

    服务器serverpython程序(多线程版): 

      1 import socket
      2 
      3 from threading import Thread,currentThread,activeCount,enumerate
      4 
      5 server = socket.socket()
      6 
      7 server.bind(("127.0.0.1", 8888))
      8 
      9 server.listen()
     10 
     11  def func_html(conn):
     12 
     13     print("html>>>",currentThread())
     14 
     15     with open("index.html", "rb")as f:
     16 
     17         conn.send(f.read())
     18 
     19 def func_js(conn):
     20 
     21     print("js>>>", currentThread())
     22 
     23     with open("index.js", "rb")as f:
     24 
     25         conn.send(f.read())
     26 
     27  
     28 
     29 def func_css(conn):
     30 
     31     print("css>>>", currentThread())
     32 
     33     with open("index.css", "rb")as f:
     34 
     35         conn.send(f.read())
     36 
     37  
     38 
     39 def func_img(conn):
     40 
     41     print("img>>>", currentThread())
     42 
     43     with open("index.png", "rb")as f:
     44 
     45         conn.send(f.read())
     46 
     47  
     48 
     49 def func_ico(conn):
     50 
     51     print("icon>>>", currentThread())
     52 
     53     with open("favicon.ico","rb")as f:
     54 
     55         conn.send(f.read())
     56 
     57  
     58 
     59 def respones_back(conn,path):
     60 
     61     conn.send("HTTP/1.1 200 ok 
    
    ".encode("utf-8"))
     62 
     63     if path == "/":
     64 
     65         func_html(conn)
     66 
     67     elif path == "/index.js":
     68 
     69         func_js(conn)
     70 
     71     elif path == "/index.css":
     72 
     73         func_css(conn)
     74 
     75     elif path == "/index.png":
     76 
     77         func_img(conn)
     78 
     79     elif path == "/favicon.ico":
     80 
     81         func_ico(conn)
     82 
     83     conn.close()
     84 
     85  
     86 
     87 if __name__ == '__main__':
     88 
     89     while  1:
     90 
     91         conn, client_addr = server.accept()
     92 
     93         http_request=conn.recv(1024).decode("utf-8")
     94 
     95         path=http_request.split("
    ")[0].split(" ")[1]
     96 
     97         print("path>>>",path)       
     98 
     99         # respone_back(path)
    100 
    101         #开线程进行异步处理
    102 
    103         task=Thread(target=respones_back,args=(conn,path))
    104 
    105         task.start()
    106 
    107         # print("threads>>>",activeCount(),enumerate()) #查看当前存活的线程和数量

    客户端浏览器访问:

                 在浏览器地址栏直接输入地址端口:127.0.0.18888 

    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>

     


     

     

  • 相关阅读:
    微信企业号开发:UserAgent
    用sinopia搭建内部npm服务
    python format用法详解
    python正则表达式re之compile函数解析
    Socket通信原理
    TCP半开连接与半闭连接
    使用npm安装一些包失败了的看过来(npm国内镜像介绍)
    UI优秀框架(库)
    关于 WebView 知识点的详解
    CommonJS规范
  • 原文地址:https://www.cnblogs.com/open-yang/p/11182777.html
Copyright © 2011-2022 走看看