静态服务器--多线程 (python)

# __author:   han-zhang
# date:  2019/1/5 17:32

import socket, threading, re


def request_header(client_socker, client_addr):
    print(str(client_addr).join("连接成功"))
    recv_data = client_socker.recv(1024).decode("utf-8")
    request_header_lines = recv_data.splitlines()

    for line in request_header_lines:
        print(line)

    http_header_line = request_header_lines[0]
    file_name = re.match(r"[^/]+(/[^ ]*)", http_header_line).group(1)
    print("frist file name is %s" % file_name)

    if file_name == "/":
        new_file_name = "/index.html"
    else:
        new_file_name = file_name

    try:
        f = open(new_file_name, "rb")
    except:
        response_header = "HTTP/ 404 NOT FOUND OK/r/n"
        response_header += "/r/n"
        response_body = "===sorry==="
    else:
        response_header = "HTTP/ 200 ok/r/n "
        response_header += "/r/n"
        response_body = f.read()

    finally:
        client_socker.sendall(response_header.encode("utf-8"))
        client_socker.sendall(response_body.encode("utf-8"))
        client_socker.close()


def main():
    servsr_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    servsr_socket.bind(("localhost", 8000))
    servsr_socket.listen(10)

    while True:
        client_socket, client_addr = servsr_socket.accept()
        p = threading.Thread(target=request_header, args=(client_socket, client_addr))
        p.start()


if __name__ == "__main__":
    main()

未经笔者允许,不得转载

全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务