• socket 简单实现HTTP服务器


     1 # -*- coding: utf-8 -*-
     2 # @Time : 2019-07-17 1:39
     3 # @File : 网络socket实现http服务器.py
     4 # @Software: PyCharm
     5 
     6 import socket
     7 import re
     8 
     9 
    10 def server_conn(conn,file_name):
    11     # 1.响应头部
    12     if file_name == '/index.html':
    13         # 可换成HTML本地文件
    14         response = "HTTP/1.1 200 OK 
    "
    15         # 2.响应body
    16         response += "
    "
    17         response += "<h1> index </h1>"
    18         # 3.发送请求
    19         conn.sendall(bytes(response, encoding="utf-8"))
    20     else:
    21         response = "HTTP/1.1 404 OK 
    "
    22         # 2.响应body
    23         response += "
    "
    24         response += "<h1> pages not found </h1>"
    25         # 3.发送请求
    26         conn.sendall(bytes(response, encoding="utf-8"))
    27     pass
    28 
    29 
    30 def main(host, port):
    31     # 1.创建套接字
    32     server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    33     server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    34     # 2.绑定
    35     server.bind((host, port))
    36     # 3.监听
    37     server.listen(128)
    38     # 4.连接
    39     while True:
    40         conn, address = server.accept()
    41         # 接收客户端消息,最大字节数1024
    42         client_mess = conn.recv(1024)
    43         # 接收浏览器返回数据
    44         client_content = str(client_mess, encoding="utf-8").splitlines()
    45         # 切割匹配访问路径
    46         file_name = re.match(r"[^/]+(/[^ ]*)",client_content[0])
    47         if file_name:
    48             file_name1 = file_name.group(1)
    49             if file_name1 == "/":
    50                 file_name1 = "/index.html"
    51             print(file_name1)
    52         # print(client_content)
    53         server_conn(conn,file_name1)
    54         conn.close()
    55     pass
    56 
    57 
    58 if __name__ == "__main__":
    59     main("127.0.0.1", 7890)
    60 
    61 # 注 : http协议,三次握手,四次挥手 
  • 相关阅读:
    stm32keilIDE遇到的bug
    linux输入子系统
    按键消抖
    字符驱动程序之——同步互斥阻塞
    字符驱动程序之——异步通知
    字符驱动程序之——poll机制
    第一个驱动之字符设备驱动(四)按键中断
    第一个驱动之字符设备驱动(三)按键查询
    第一个驱动之字符设备驱动(二)mdev
    三者互ping,PC,虚拟机,uboot,nfs网络文件系统搭建
  • 原文地址:https://www.cnblogs.com/jum-bolg/p/11198584.html
Copyright © 2020-2023  润新知