# __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()
未经笔者允许,不得转载