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协议,三次握手,四次挥手