# coding=utf-8
import socket
import re
def service_client(new_socket, client_addr):
# 接受浏览器发送过来的http请求
recv_request = new_socket.recv(1024).decode("utf-8")
# print(recv_request)
# 解析请求查找请求信息
request_list = recv_request.splitlines() # 按行切割
# print(request_list)
ret = re.match(r"[^/]+(/[^ ]*)", request_list[0])
file_name = ""
if ret:
file_name = ret.group(1)
# print(file_name)
if file_name == "/":
file_name = "/html/html01.html"
try:
f = open("./web服务器" + file_name, "rb")
except:
response = "HTTP/1.1 404 NOT FOUND\r\n"
response += "\r\n"
new_socket.send(response.encode("utf-8"))
else:
html_content = f.read()
f.close()
# 返回http格式的数据header body
response = "HTTP/1.1 200 OK\r\n"
response += "\r\n"
new_socket.send(response.encode("utf-8"))
new_socket.send(html_content)
new_socket.close()
def main():
# 创建套接字
tcp_sever_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定
tcp_sever_socket.bind(("", 8000))
# 变换监听套接字
tcp_sever_socket.listen(128)
while True:
# 等待链接
new_socket, client_addr = tcp_sever_socket.accept()
# 为客户端服务
service_client(new_socket, client_addr)
tcp_sever_socket.close()
if __name__ == '__main__':
main()